﻿2026-06-22T02:37:07.2226557Z ##[group]Run ./traceable-reqs check --json
2026-06-22T02:37:07.2226930Z [36;1m./traceable-reqs check --json[0m
2026-06-22T02:37:07.2239607Z shell: /usr/bin/bash -e {0}
2026-06-22T02:37:07.2239870Z ##[endgroup]
2026-06-22T02:37:07.2862045Z {
2026-06-22T02:37:07.2862585Z   "schemaVersion": 1,
2026-06-22T02:37:07.2863072Z   "summary": {
2026-06-22T02:37:07.2863528Z     "requirementCount": 280,
2026-06-22T02:37:07.2864011Z     "completeCount": 280,
2026-06-22T02:37:07.2864450Z     "incompleteCount": 0,
2026-06-22T02:37:07.2864908Z     "findingCount": 0
2026-06-22T02:37:07.2865299Z   },
2026-06-22T02:37:07.2865653Z   "requirements": [
2026-06-22T02:37:07.2866048Z     {
2026-06-22T02:37:07.2866883Z       "id": "REQ-API-1",
2026-06-22T02:37:07.2867465Z       "title": "api prefix and adapter_name on every machinery invocation",
2026-06-22T02:37:07.2868099Z       "requiredStages": [
2026-06-22T02:37:07.2868515Z         "impl",
2026-06-22T02:37:07.2868892Z         "unit",
2026-06-22T02:37:07.2869522Z         "int"
2026-06-22T02:37:07.2870043Z       ],
2026-06-22T02:37:07.2870396Z       "stages": {
2026-06-22T02:37:07.2870740Z         "doc": {
2026-06-22T02:37:07.2871099Z           "complete": false,
2026-06-22T02:37:07.2871484Z           "evidence": []
2026-06-22T02:37:07.2871846Z         },
2026-06-22T02:37:07.2872184Z         "impl": {
2026-06-22T02:37:07.2872515Z           "complete": true,
2026-06-22T02:37:07.2872877Z           "evidence": [
2026-06-22T02:37:07.2873211Z             {
2026-06-22T02:37:07.2873540Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.2873956Z               "line": 15
2026-06-22T02:37:07.2874271Z             }
2026-06-22T02:37:07.2874581Z           ]
2026-06-22T02:37:07.2874881Z         },
2026-06-22T02:37:07.2875165Z         "int": {
2026-06-22T02:37:07.2875482Z           "complete": true,
2026-06-22T02:37:07.2875821Z           "evidence": [
2026-06-22T02:37:07.2876145Z             {
2026-06-22T02:37:07.2876498Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.2876937Z               "line": 13
2026-06-22T02:37:07.2877247Z             }
2026-06-22T02:37:07.2877543Z           ]
2026-06-22T02:37:07.2877818Z         },
2026-06-22T02:37:07.2878120Z         "unit": {
2026-06-22T02:37:07.2878445Z           "complete": true,
2026-06-22T02:37:07.2878789Z           "evidence": [
2026-06-22T02:37:07.2879203Z             {
2026-06-22T02:37:07.2879556Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.2879966Z               "line": 717
2026-06-22T02:37:07.2880281Z             },
2026-06-22T02:37:07.2880571Z             {
2026-06-22T02:37:07.2880895Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.2881291Z               "line": 804
2026-06-22T02:37:07.2881615Z             }
2026-06-22T02:37:07.2881905Z           ]
2026-06-22T02:37:07.2882187Z         }
2026-06-22T02:37:07.2882478Z       }
2026-06-22T02:37:07.2882749Z     },
2026-06-22T02:37:07.2883033Z     {
2026-06-22T02:37:07.2883324Z       "id": "REQ-API-2",
2026-06-22T02:37:07.2883838Z       "title": "The api subcommand surface (bind/listen/poll/state/worker/boundary/...)",
2026-06-22T02:37:07.2884396Z       "requiredStages": [
2026-06-22T02:37:07.2884735Z         "impl",
2026-06-22T02:37:07.2885031Z         "unit",
2026-06-22T02:37:07.2885340Z         "int"
2026-06-22T02:37:07.2885631Z       ],
2026-06-22T02:37:07.2885919Z       "stages": {
2026-06-22T02:37:07.2886224Z         "doc": {
2026-06-22T02:37:07.2886543Z           "complete": false,
2026-06-22T02:37:07.2886892Z           "evidence": []
2026-06-22T02:37:07.2887220Z         },
2026-06-22T02:37:07.2887511Z         "impl": {
2026-06-22T02:37:07.2887840Z           "complete": true,
2026-06-22T02:37:07.2888183Z           "evidence": [
2026-06-22T02:37:07.2888500Z             {
2026-06-22T02:37:07.2888857Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:37:07.2889373Z               "line": 17
2026-06-22T02:37:07.2889697Z             },
2026-06-22T02:37:07.2889998Z             {
2026-06-22T02:37:07.2890656Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.2891102Z               "line": 20
2026-06-22T02:37:07.2891393Z             },
2026-06-22T02:37:07.2891604Z             {
2026-06-22T02:37:07.2891914Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.2892356Z               "line": 142
2026-06-22T02:37:07.2892699Z             },
2026-06-22T02:37:07.2893004Z             {
2026-06-22T02:37:07.2893361Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2893807Z               "line": 24
2026-06-22T02:37:07.2894141Z             },
2026-06-22T02:37:07.2894437Z             {
2026-06-22T02:37:07.2894980Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2895420Z               "line": 41
2026-06-22T02:37:07.2895749Z             },
2026-06-22T02:37:07.2896050Z             {
2026-06-22T02:37:07.2896400Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2896841Z               "line": 213
2026-06-22T02:37:07.2897189Z             },
2026-06-22T02:37:07.2897494Z             {
2026-06-22T02:37:07.2897856Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2898296Z               "line": 255
2026-06-22T02:37:07.2898625Z             },
2026-06-22T02:37:07.2898929Z             {
2026-06-22T02:37:07.2899389Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2899832Z               "line": 334
2026-06-22T02:37:07.2900171Z             },
2026-06-22T02:37:07.2900476Z             {
2026-06-22T02:37:07.2900887Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2901216Z               "line": 397
2026-06-22T02:37:07.2901445Z             },
2026-06-22T02:37:07.2901643Z             {
2026-06-22T02:37:07.2902125Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2902583Z               "line": 436
2026-06-22T02:37:07.2902840Z             },
2026-06-22T02:37:07.2903050Z             {
2026-06-22T02:37:07.2903326Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.2903631Z               "line": 17
2026-06-22T02:37:07.2903864Z             },
2026-06-22T02:37:07.2904084Z             {
2026-06-22T02:37:07.2904334Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.2904639Z               "line": 30
2026-06-22T02:37:07.2904877Z             },
2026-06-22T02:37:07.2905092Z             {
2026-06-22T02:37:07.2905336Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.2905626Z               "line": 63
2026-06-22T02:37:07.2905864Z             },
2026-06-22T02:37:07.2906079Z             {
2026-06-22T02:37:07.2906328Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.2906619Z               "line": 77
2026-06-22T02:37:07.2906855Z             }
2026-06-22T02:37:07.2907072Z           ]
2026-06-22T02:37:07.2907282Z         },
2026-06-22T02:37:07.2907486Z         "int": {
2026-06-22T02:37:07.2907716Z           "complete": true,
2026-06-22T02:37:07.2907974Z           "evidence": [
2026-06-22T02:37:07.2908203Z             {
2026-06-22T02:37:07.2908533Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.2909032Z               "line": 14
2026-06-22T02:37:07.2909436Z             },
2026-06-22T02:37:07.2909667Z             {
2026-06-22T02:37:07.2909926Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.2910216Z               "line": 187
2026-06-22T02:37:07.2910436Z             }
2026-06-22T02:37:07.2910631Z           ]
2026-06-22T02:37:07.2910836Z         },
2026-06-22T02:37:07.2911055Z         "unit": {
2026-06-22T02:37:07.2911284Z           "complete": true,
2026-06-22T02:37:07.2911536Z           "evidence": [
2026-06-22T02:37:07.2911757Z             {
2026-06-22T02:37:07.2912005Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:37:07.2912298Z               "line": 82
2026-06-22T02:37:07.2912518Z             },
2026-06-22T02:37:07.2912719Z             {
2026-06-22T02:37:07.2913195Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.2913472Z               "line": 279
2026-06-22T02:37:07.2913711Z             },
2026-06-22T02:37:07.2913906Z             {
2026-06-22T02:37:07.2914163Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2914467Z               "line": 709
2026-06-22T02:37:07.2914700Z             },
2026-06-22T02:37:07.2914918Z             {
2026-06-22T02:37:07.2915175Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2915513Z               "line": 720
2026-06-22T02:37:07.2915877Z             },
2026-06-22T02:37:07.2916196Z             {
2026-06-22T02:37:07.2916753Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2917203Z               "line": 873
2026-06-22T02:37:07.2917548Z             },
2026-06-22T02:37:07.2917862Z             {
2026-06-22T02:37:07.2918239Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2918652Z               "line": 919
2026-06-22T02:37:07.2919073Z             },
2026-06-22T02:37:07.2919378Z             {
2026-06-22T02:37:07.2919756Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.2920176Z               "line": 143
2026-06-22T02:37:07.2920509Z             },
2026-06-22T02:37:07.2920810Z             {
2026-06-22T02:37:07.2921167Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.2921591Z               "line": 187
2026-06-22T02:37:07.2921921Z             }
2026-06-22T02:37:07.2922221Z           ]
2026-06-22T02:37:07.2922516Z         }
2026-06-22T02:37:07.2922801Z       }
2026-06-22T02:37:07.2923088Z     },
2026-06-22T02:37:07.2923384Z     {
2026-06-22T02:37:07.2923684Z       "id": "REQ-API-3",
2026-06-22T02:37:07.2924127Z       "title": "commune/signoff are file-drops, not commands",
2026-06-22T02:37:07.2924600Z       "requiredStages": [
2026-06-22T02:37:07.2924938Z         "impl",
2026-06-22T02:37:07.2925251Z         "unit",
2026-06-22T02:37:07.2925559Z         "int"
2026-06-22T02:37:07.2925869Z       ],
2026-06-22T02:37:07.2926166Z       "stages": {
2026-06-22T02:37:07.2926490Z         "doc": {
2026-06-22T02:37:07.2927052Z           "complete": false,
2026-06-22T02:37:07.2927687Z           "evidence": []
2026-06-22T02:37:07.2928174Z         },
2026-06-22T02:37:07.2928665Z         "impl": {
2026-06-22T02:37:07.2929241Z           "complete": true,
2026-06-22T02:37:07.2929756Z           "evidence": [
2026-06-22T02:37:07.2930219Z             {
2026-06-22T02:37:07.2930778Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.2931436Z               "line": 27
2026-06-22T02:37:07.2931914Z             },
2026-06-22T02:37:07.2963713Z             {
2026-06-22T02:37:07.2964200Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2964510Z               "line": 566
2026-06-22T02:37:07.2964738Z             }
2026-06-22T02:37:07.2964934Z           ]
2026-06-22T02:37:07.2965123Z         },
2026-06-22T02:37:07.2965323Z         "int": {
2026-06-22T02:37:07.2965562Z           "complete": true,
2026-06-22T02:37:07.2965844Z           "evidence": [
2026-06-22T02:37:07.2966062Z             {
2026-06-22T02:37:07.2966367Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.2966668Z               "line": 261
2026-06-22T02:37:07.2966935Z             }
2026-06-22T02:37:07.2967141Z           ]
2026-06-22T02:37:07.2967345Z         },
2026-06-22T02:37:07.2967611Z         "unit": {
2026-06-22T02:37:07.2967839Z           "complete": true,
2026-06-22T02:37:07.2968091Z           "evidence": [
2026-06-22T02:37:07.2968373Z             {
2026-06-22T02:37:07.2968624Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.2968934Z               "line": 280
2026-06-22T02:37:07.2969288Z             },
2026-06-22T02:37:07.2969512Z             {
2026-06-22T02:37:07.2969773Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.2970135Z               "line": 948
2026-06-22T02:37:07.2970363Z             }
2026-06-22T02:37:07.2970900Z           ]
2026-06-22T02:37:07.2971210Z         }
2026-06-22T02:37:07.2971530Z       }
2026-06-22T02:37:07.2971825Z     },
2026-06-22T02:37:07.2972126Z     {
2026-06-22T02:37:07.2972450Z       "id": "REQ-API-4",
2026-06-22T02:37:07.2975366Z       "title": "api resolves the adapter manifest (+ profile + install dir) from `--adapter name:profile` via the registry when `--manifest` is omitted; `--manifest` becomes an optional OVERRIDE (unregistered / local-dev manifests). Removes the require-both-flags redundancy — a registered adapter's live bringup / digest / capability needs only `--adapter` — and yields the precise install dir (the record's source_dir) rather than the --manifest parent, closing the copy-mode psyche-binary edge (v0.8.0)",
2026-06-22T02:37:07.2977528Z       "requiredStages": [
2026-06-22T02:37:07.2977766Z         "doc",
2026-06-22T02:37:07.2994050Z         "impl",
2026-06-22T02:37:07.2994325Z         "unit"
2026-06-22T02:37:07.2994544Z       ],
2026-06-22T02:37:07.2994764Z       "stages": {
2026-06-22T02:37:07.2994983Z         "doc": {
2026-06-22T02:37:07.2995203Z           "complete": true,
2026-06-22T02:37:07.2995455Z           "evidence": [
2026-06-22T02:37:07.2995665Z             {
2026-06-22T02:37:07.2995886Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.2996137Z               "line": 149
2026-06-22T02:37:07.2996356Z             }
2026-06-22T02:37:07.2996553Z           ]
2026-06-22T02:37:07.2996755Z         },
2026-06-22T02:37:07.2996962Z         "impl": {
2026-06-22T02:37:07.2997195Z           "complete": true,
2026-06-22T02:37:07.2997437Z           "evidence": [
2026-06-22T02:37:07.2997657Z             {
2026-06-22T02:37:07.2997914Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.2998367Z               "line": 484
2026-06-22T02:37:07.2998711Z             }
2026-06-22T02:37:07.2999086Z           ]
2026-06-22T02:37:07.2999399Z         },
2026-06-22T02:37:07.2999714Z         "int": {
2026-06-22T02:37:07.3000058Z           "complete": false,
2026-06-22T02:37:07.3000430Z           "evidence": []
2026-06-22T02:37:07.3000910Z         },
2026-06-22T02:37:07.3001230Z         "unit": {
2026-06-22T02:37:07.3001444Z           "complete": true,
2026-06-22T02:37:07.3001684Z           "evidence": [
2026-06-22T02:37:07.3001905Z             {
2026-06-22T02:37:07.3002152Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.3002433Z               "line": 657
2026-06-22T02:37:07.3002657Z             },
2026-06-22T02:37:07.3002861Z             {
2026-06-22T02:37:07.3003095Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.3003367Z               "line": 681
2026-06-22T02:37:07.3003588Z             },
2026-06-22T02:37:07.3003787Z             {
2026-06-22T02:37:07.3004011Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.3004279Z               "line": 705
2026-06-22T02:37:07.3004501Z             }
2026-06-22T02:37:07.3004699Z           ]
2026-06-22T02:37:07.3004895Z         }
2026-06-22T02:37:07.3005089Z       }
2026-06-22T02:37:07.3005281Z     },
2026-06-22T02:37:07.3005477Z     {
2026-06-22T02:37:07.3005686Z       "id": "REQ-ARCH-1",
2026-06-22T02:37:07.3005963Z       "title": "Many small acyclically-layered crates",
2026-06-22T02:37:07.3006254Z       "requiredStages": [
2026-06-22T02:37:07.3006469Z         "impl"
2026-06-22T02:37:07.3006669Z       ],
2026-06-22T02:37:07.3006869Z       "stages": {
2026-06-22T02:37:07.3007075Z         "doc": {
2026-06-22T02:37:07.3007292Z           "complete": false,
2026-06-22T02:37:07.3007531Z           "evidence": []
2026-06-22T02:37:07.3007745Z         },
2026-06-22T02:37:07.3007954Z         "impl": {
2026-06-22T02:37:07.3008185Z           "complete": true,
2026-06-22T02:37:07.3008413Z           "evidence": [
2026-06-22T02:37:07.3008632Z             {
2026-06-22T02:37:07.3008861Z               "path": "crates/spt-msg/src/lib.rs",
2026-06-22T02:37:07.3009276Z               "line": 18
2026-06-22T02:37:07.3009508Z             },
2026-06-22T02:37:07.3009897Z             {
2026-06-22T02:37:07.3010149Z               "path": "crates/spt-proto/src/lib.rs",
2026-06-22T02:37:07.3010441Z               "line": 12
2026-06-22T02:37:07.3010661Z             },
2026-06-22T02:37:07.3010855Z             {
2026-06-22T02:37:07.3011094Z               "path": "crates/spt-store/src/lib.rs",
2026-06-22T02:37:07.3011361Z               "line": 12
2026-06-22T02:37:07.3011572Z             }
2026-06-22T02:37:07.3011770Z           ]
2026-06-22T02:37:07.3011967Z         },
2026-06-22T02:37:07.3012163Z         "int": {
2026-06-22T02:37:07.3012395Z           "complete": false,
2026-06-22T02:37:07.3012637Z           "evidence": []
2026-06-22T02:37:07.3012956Z         },
2026-06-22T02:37:07.3013165Z         "unit": {
2026-06-22T02:37:07.3013388Z           "complete": false,
2026-06-22T02:37:07.3013623Z           "evidence": []
2026-06-22T02:37:07.3013843Z         }
2026-06-22T02:37:07.3014037Z       }
2026-06-22T02:37:07.3014228Z     },
2026-06-22T02:37:07.3014415Z     {
2026-06-22T02:37:07.3014624Z       "id": "REQ-ARCH-2",
2026-06-22T02:37:07.3014957Z       "title": "Public SDK surface is spt-proto, spt-runtime, spt-msg",
2026-06-22T02:37:07.3015288Z       "requiredStages": [
2026-06-22T02:37:07.3015518Z         "impl"
2026-06-22T02:37:07.3015722Z       ],
2026-06-22T02:37:07.3015907Z       "stages": {
2026-06-22T02:37:07.3016123Z         "doc": {
2026-06-22T02:37:07.3016337Z           "complete": false,
2026-06-22T02:37:07.3016585Z           "evidence": []
2026-06-22T02:37:07.3016809Z         },
2026-06-22T02:37:07.3017006Z         "impl": {
2026-06-22T02:37:07.3017219Z           "complete": true,
2026-06-22T02:37:07.3017452Z           "evidence": [
2026-06-22T02:37:07.3017678Z             {
2026-06-22T02:37:07.3017924Z               "path": "crates/spt-runtime/src/lib.rs",
2026-06-22T02:37:07.3018200Z               "line": 18
2026-06-22T02:37:07.3018411Z             }
2026-06-22T02:37:07.3018602Z           ]
2026-06-22T02:37:07.3018806Z         },
2026-06-22T02:37:07.3019111Z         "int": {
2026-06-22T02:37:07.3019364Z           "complete": false,
2026-06-22T02:37:07.3019608Z           "evidence": []
2026-06-22T02:37:07.3019831Z         },
2026-06-22T02:37:07.3020017Z         "unit": {
2026-06-22T02:37:07.3020235Z           "complete": false,
2026-06-22T02:37:07.3020466Z           "evidence": []
2026-06-22T02:37:07.3020682Z         }
2026-06-22T02:37:07.3020882Z       }
2026-06-22T02:37:07.3021072Z     },
2026-06-22T02:37:07.3021259Z     {
2026-06-22T02:37:07.3021459Z       "id": "REQ-ARCH-3",
2026-06-22T02:37:07.3021821Z       "title": "Wire-protocol version independent of crate semver, N-1 compat window",
2026-06-22T02:37:07.3022194Z       "requiredStages": [
2026-06-22T02:37:07.3022423Z         "impl",
2026-06-22T02:37:07.3022632Z         "unit"
2026-06-22T02:37:07.3022842Z       ],
2026-06-22T02:37:07.3023040Z       "stages": {
2026-06-22T02:37:07.3023243Z         "doc": {
2026-06-22T02:37:07.3023463Z           "complete": false,
2026-06-22T02:37:07.3023696Z           "evidence": []
2026-06-22T02:37:07.3023920Z         },
2026-06-22T02:37:07.3024121Z         "impl": {
2026-06-22T02:37:07.3024340Z           "complete": true,
2026-06-22T02:37:07.3024573Z           "evidence": [
2026-06-22T02:37:07.3024793Z             {
2026-06-22T02:37:07.3025037Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:37:07.3025323Z               "line": 34
2026-06-22T02:37:07.3025541Z             },
2026-06-22T02:37:07.3025749Z             {
2026-06-22T02:37:07.3025996Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:37:07.3026277Z               "line": 41
2026-06-22T02:37:07.3026491Z             }
2026-06-22T02:37:07.3026687Z           ]
2026-06-22T02:37:07.3026888Z         },
2026-06-22T02:37:07.3027078Z         "int": {
2026-06-22T02:37:07.3027294Z           "complete": false,
2026-06-22T02:37:07.3027532Z           "evidence": []
2026-06-22T02:37:07.3027751Z         },
2026-06-22T02:37:07.3027947Z         "unit": {
2026-06-22T02:37:07.3028157Z           "complete": true,
2026-06-22T02:37:07.3028517Z           "evidence": [
2026-06-22T02:37:07.3028737Z             {
2026-06-22T02:37:07.3029056Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:37:07.3029342Z               "line": 51
2026-06-22T02:37:07.3029562Z             },
2026-06-22T02:37:07.3029757Z             {
2026-06-22T02:37:07.3029995Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:37:07.3030277Z               "line": 71
2026-06-22T02:37:07.3030488Z             },
2026-06-22T02:37:07.3030691Z             {
2026-06-22T02:37:07.3030937Z               "path": "crates/spt-proto/src/version.rs",
2026-06-22T02:37:07.3031214Z               "line": 83
2026-06-22T02:37:07.3031561Z             }
2026-06-22T02:37:07.3031762Z           ]
2026-06-22T02:37:07.3031961Z         }
2026-06-22T02:37:07.3032157Z       }
2026-06-22T02:37:07.3032343Z     },
2026-06-22T02:37:07.3032538Z     {
2026-06-22T02:37:07.3032735Z       "id": "REQ-ARCH-4",
2026-06-22T02:37:07.3033064Z       "title": "Copy-verbatim the commodity layer from the sister project",
2026-06-22T02:37:07.3033421Z       "requiredStages": [
2026-06-22T02:37:07.3033649Z         "impl",
2026-06-22T02:37:07.3033846Z         "unit"
2026-06-22T02:37:07.3034038Z       ],
2026-06-22T02:37:07.3034242Z       "stages": {
2026-06-22T02:37:07.3034452Z         "doc": {
2026-06-22T02:37:07.3034663Z           "complete": false,
2026-06-22T02:37:07.3034905Z           "evidence": []
2026-06-22T02:37:07.3035129Z         },
2026-06-22T02:37:07.3035325Z         "impl": {
2026-06-22T02:37:07.3035545Z           "complete": true,
2026-06-22T02:37:07.3035777Z           "evidence": [
2026-06-22T02:37:07.3035997Z             {
2026-06-22T02:37:07.3036244Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3036527Z               "line": 165
2026-06-22T02:37:07.3036737Z             },
2026-06-22T02:37:07.3036972Z             {
2026-06-22T02:37:07.3037220Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3037501Z               "line": 188
2026-06-22T02:37:07.3037719Z             },
2026-06-22T02:37:07.3037915Z             {
2026-06-22T02:37:07.3038155Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3038431Z               "line": 208
2026-06-22T02:37:07.3038654Z             },
2026-06-22T02:37:07.3038855Z             {
2026-06-22T02:37:07.3039235Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3039517Z               "line": 223
2026-06-22T02:37:07.3039741Z             },
2026-06-22T02:37:07.3039940Z             {
2026-06-22T02:37:07.3040169Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3040446Z               "line": 273
2026-06-22T02:37:07.3040661Z             }
2026-06-22T02:37:07.3040856Z           ]
2026-06-22T02:37:07.3041053Z         },
2026-06-22T02:37:07.3041241Z         "int": {
2026-06-22T02:37:07.3041463Z           "complete": false,
2026-06-22T02:37:07.3041697Z           "evidence": []
2026-06-22T02:37:07.3041916Z         },
2026-06-22T02:37:07.3042121Z         "unit": {
2026-06-22T02:37:07.3042336Z           "complete": true,
2026-06-22T02:37:07.3042565Z           "evidence": [
2026-06-22T02:37:07.3042784Z             {
2026-06-22T02:37:07.3043017Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3043290Z               "line": 334
2026-06-22T02:37:07.3043514Z             },
2026-06-22T02:37:07.3043704Z             {
2026-06-22T02:37:07.3043934Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3044209Z               "line": 344
2026-06-22T02:37:07.3044425Z             },
2026-06-22T02:37:07.3044631Z             {
2026-06-22T02:37:07.3044874Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3045141Z               "line": 355
2026-06-22T02:37:07.3045355Z             },
2026-06-22T02:37:07.3045552Z             {
2026-06-22T02:37:07.3045785Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3046056Z               "line": 366
2026-06-22T02:37:07.3046386Z             },
2026-06-22T02:37:07.3046594Z             {
2026-06-22T02:37:07.3046832Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3047102Z               "line": 378
2026-06-22T02:37:07.3047316Z             },
2026-06-22T02:37:07.3047512Z             {
2026-06-22T02:37:07.3047732Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3048008Z               "line": 391
2026-06-22T02:37:07.3048232Z             },
2026-06-22T02:37:07.3048424Z             {
2026-06-22T02:37:07.3048657Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3048933Z               "line": 402
2026-06-22T02:37:07.3049387Z             },
2026-06-22T02:37:07.3049584Z             {
2026-06-22T02:37:07.3049819Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3050096Z               "line": 419
2026-06-22T02:37:07.3050316Z             },
2026-06-22T02:37:07.3050515Z             {
2026-06-22T02:37:07.3050749Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.3051030Z               "line": 547
2026-06-22T02:37:07.3051250Z             }
2026-06-22T02:37:07.3051454Z           ]
2026-06-22T02:37:07.3051645Z         }
2026-06-22T02:37:07.3051834Z       }
2026-06-22T02:37:07.3052023Z     },
2026-06-22T02:37:07.3052214Z     {
2026-06-22T02:37:07.3052414Z       "id": "REQ-CLI-1",
2026-06-22T02:37:07.3053764Z       "title": "spt endpoint noun namespace: absorbs fork/suspend/wake/shutdown/rename/stop/digest + access (ported 1:1: allow|revoke|open|list, decision 21) + description (ex-resources blurb; bare=show, set=author); merged endpoint list [--local|--subnet <name>] grouped by subnet with SELF pinned, --detail adding the ex-resources yellow-pages blurb projection; bare spt endpoint = the list (M8 decisions 1-2, 25)",
2026-06-22T02:37:07.3071969Z       "requiredStages": [
2026-06-22T02:37:07.3072361Z         "impl",
2026-06-22T02:37:07.3072637Z         "unit"
2026-06-22T02:37:07.3072888Z       ],
2026-06-22T02:37:07.3073139Z       "stages": {
2026-06-22T02:37:07.3073397Z         "doc": {
2026-06-22T02:37:07.3073668Z           "complete": false,
2026-06-22T02:37:07.3073964Z           "evidence": []
2026-06-22T02:37:07.3074230Z         },
2026-06-22T02:37:07.3074478Z         "impl": {
2026-06-22T02:37:07.3074746Z           "complete": true,
2026-06-22T02:37:07.3075031Z           "evidence": [
2026-06-22T02:37:07.3075295Z             {
2026-06-22T02:37:07.3075572Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3075898Z               "line": 225
2026-06-22T02:37:07.3076168Z             },
2026-06-22T02:37:07.3076411Z             {
2026-06-22T02:37:07.3076701Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3077030Z               "line": 1093
2026-06-22T02:37:07.3077298Z             },
2026-06-22T02:37:07.3077546Z             {
2026-06-22T02:37:07.3077819Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3078144Z               "line": 1720
2026-06-22T02:37:07.3078412Z             },
2026-06-22T02:37:07.3078653Z             {
2026-06-22T02:37:07.3078921Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3079335Z               "line": 3124
2026-06-22T02:37:07.3079602Z             }
2026-06-22T02:37:07.3079831Z           ]
2026-06-22T02:37:07.3080057Z         },
2026-06-22T02:37:07.3080256Z         "int": {
2026-06-22T02:37:07.3080475Z           "complete": false,
2026-06-22T02:37:07.3080710Z           "evidence": []
2026-06-22T02:37:07.3080918Z         },
2026-06-22T02:37:07.3081123Z         "unit": {
2026-06-22T02:37:07.3081342Z           "complete": true,
2026-06-22T02:37:07.3081565Z           "evidence": [
2026-06-22T02:37:07.3081791Z             {
2026-06-22T02:37:07.3082010Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3082272Z               "line": 7947
2026-06-22T02:37:07.3082481Z             }
2026-06-22T02:37:07.3082683Z           ]
2026-06-22T02:37:07.3082868Z         }
2026-06-22T02:37:07.3083067Z       }
2026-06-22T02:37:07.3083406Z     },
2026-06-22T02:37:07.3083596Z     {
2026-06-22T02:37:07.3083799Z       "id": "REQ-CLI-2",
2026-06-22T02:37:07.3084672Z       "title": "spt daemon noun: run|stop|status (hidden daemon verb becomes daemon run; agent-endpoint shutdown keeps its name under endpoint); daemon status renders the pump heartbeat (last-tick recency) so a half-dead daemon is never rendered implied-healthy (M8 decisions 5, 23)",
2026-06-22T02:37:07.3085512Z       "requiredStages": [
2026-06-22T02:37:07.3085740Z         "impl",
2026-06-22T02:37:07.3085949Z         "unit"
2026-06-22T02:37:07.3086151Z       ],
2026-06-22T02:37:07.3086349Z       "stages": {
2026-06-22T02:37:07.3086675Z         "doc": {
2026-06-22T02:37:07.3086891Z           "complete": false,
2026-06-22T02:37:07.3087134Z           "evidence": []
2026-06-22T02:37:07.3087347Z         },
2026-06-22T02:37:07.3087544Z         "impl": {
2026-06-22T02:37:07.3087759Z           "complete": true,
2026-06-22T02:37:07.3088011Z           "evidence": [
2026-06-22T02:37:07.3088239Z             {
2026-06-22T02:37:07.3088482Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3088774Z               "line": 414
2026-06-22T02:37:07.3089077Z             },
2026-06-22T02:37:07.3089275Z             {
2026-06-22T02:37:07.3089514Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:37:07.3089800Z               "line": 97
2026-06-22T02:37:07.3090020Z             },
2026-06-22T02:37:07.3090219Z             {
2026-06-22T02:37:07.3090454Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.3090735Z               "line": 256
2026-06-22T02:37:07.3090951Z             },
2026-06-22T02:37:07.3091145Z             {
2026-06-22T02:37:07.3091364Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3091637Z               "line": 434
2026-06-22T02:37:07.3091849Z             },
2026-06-22T02:37:07.3092045Z             {
2026-06-22T02:37:07.3092260Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3092532Z               "line": 1174
2026-06-22T02:37:07.3092755Z             },
2026-06-22T02:37:07.3092956Z             {
2026-06-22T02:37:07.3093181Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3093433Z               "line": 1958
2026-06-22T02:37:07.3093656Z             },
2026-06-22T02:37:07.3093844Z             {
2026-06-22T02:37:07.3094056Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3094321Z               "line": 2047
2026-06-22T02:37:07.3094541Z             },
2026-06-22T02:37:07.3094740Z             {
2026-06-22T02:37:07.3094964Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3095218Z               "line": 2108
2026-06-22T02:37:07.3095437Z             }
2026-06-22T02:37:07.3095631Z           ]
2026-06-22T02:37:07.3095818Z         },
2026-06-22T02:37:07.3096014Z         "int": {
2026-06-22T02:37:07.3096219Z           "complete": false,
2026-06-22T02:37:07.3096453Z           "evidence": []
2026-06-22T02:37:07.3096678Z         },
2026-06-22T02:37:07.3096880Z         "unit": {
2026-06-22T02:37:07.3097094Z           "complete": true,
2026-06-22T02:37:07.3097326Z           "evidence": [
2026-06-22T02:37:07.3097545Z             {
2026-06-22T02:37:07.3097780Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.3098056Z               "line": 338
2026-06-22T02:37:07.3098271Z             },
2026-06-22T02:37:07.3098470Z             {
2026-06-22T02:37:07.3098686Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3099024Z               "line": 8102
2026-06-22T02:37:07.3099244Z             }
2026-06-22T02:37:07.3099438Z           ]
2026-06-22T02:37:07.3099633Z         }
2026-06-22T02:37:07.3099845Z       }
2026-06-22T02:37:07.3100022Z     },
2026-06-22T02:37:07.3100208Z     {
2026-06-22T02:37:07.3100412Z       "id": "REQ-CLI-3",
2026-06-22T02:37:07.3101290Z       "title": "Agent hot path stays flat across the M8 reorg: send/ring/ready/whoami/how-to unchanged; notify moves to subnet notify while notif stays top-level; breaking renames land clean with no deprecation shims (zero external CLI consumers pre-spt-claude-code) (M8 decisions 3-4, 9)",
2026-06-22T02:37:07.3102305Z       "requiredStages": [
2026-06-22T02:37:07.3102530Z         "impl",
2026-06-22T02:37:07.3102739Z         "unit"
2026-06-22T02:37:07.3102929Z       ],
2026-06-22T02:37:07.3103121Z       "stages": {
2026-06-22T02:37:07.3103320Z         "doc": {
2026-06-22T02:37:07.3103530Z           "complete": false,
2026-06-22T02:37:07.3103765Z           "evidence": []
2026-06-22T02:37:07.3103983Z         },
2026-06-22T02:37:07.3104183Z         "impl": {
2026-06-22T02:37:07.3104404Z           "complete": true,
2026-06-22T02:37:07.3104735Z           "evidence": [
2026-06-22T02:37:07.3104943Z             {
2026-06-22T02:37:07.3105172Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3105439Z               "line": 1087
2026-06-22T02:37:07.3105659Z             }
2026-06-22T02:37:07.3105853Z           ]
2026-06-22T02:37:07.3106055Z         },
2026-06-22T02:37:07.3106240Z         "int": {
2026-06-22T02:37:07.3106464Z           "complete": false,
2026-06-22T02:37:07.3106693Z           "evidence": []
2026-06-22T02:37:07.3106899Z         },
2026-06-22T02:37:07.3107083Z         "unit": {
2026-06-22T02:37:07.3107300Z           "complete": true,
2026-06-22T02:37:07.3107531Z           "evidence": [
2026-06-22T02:37:07.3107748Z             {
2026-06-22T02:37:07.3107977Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3108245Z               "line": 7912
2026-06-22T02:37:07.3108458Z             }
2026-06-22T02:37:07.3108650Z           ]
2026-06-22T02:37:07.3108836Z         }
2026-06-22T02:37:07.3109093Z       }
2026-06-22T02:37:07.3109283Z     },
2026-06-22T02:37:07.3109476Z     {
2026-06-22T02:37:07.3109665Z       "id": "REQ-CLI-4",
2026-06-22T02:37:07.3112032Z       "title": "User-facing CLI output is human-readable: DIRECT-USER commands (e.g. adapter update/list/use) render friendly prose instead of raw CODE:RESULT markers — \"claude-spt is up to date (0.2.0).\" not \"ADAPTER_UPDATE_UPTODATE:claude-spt: installed 0.2.0, latest 0.2.0\". Strictly bounded to the direct-user surface: the adapter-PARSED bringup tokens (SEEDED/BOUND/READY/NO_SEED on seed/listen, which adapters grep) stay machine-parseable — humanization is additive (a human line beside the marker, or a --porcelain/--quiet split), never a silent rename of a dual-contract marker. The user-facing bringup composition belongs to the adapter (perri); this REQ owns only the direct-user CLI surface. (v0.9.0)",
2026-06-22T02:37:07.3113904Z       "requiredStages": [],
2026-06-22T02:37:07.3114143Z       "stages": {
2026-06-22T02:37:07.3114348Z         "doc": {
2026-06-22T02:37:07.3114568Z           "complete": false,
2026-06-22T02:37:07.3114820Z           "evidence": []
2026-06-22T02:37:07.3115025Z         },
2026-06-22T02:37:07.3115224Z         "impl": {
2026-06-22T02:37:07.3115422Z           "complete": true,
2026-06-22T02:37:07.3115657Z           "evidence": [
2026-06-22T02:37:07.3115885Z             {
2026-06-22T02:37:07.3116122Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3116395Z               "line": 5678
2026-06-22T02:37:07.3116624Z             }
2026-06-22T02:37:07.3116824Z           ]
2026-06-22T02:37:07.3117019Z         },
2026-06-22T02:37:07.3117216Z         "int": {
2026-06-22T02:37:07.3117430Z           "complete": false,
2026-06-22T02:37:07.3117663Z           "evidence": []
2026-06-22T02:37:07.3117879Z         },
2026-06-22T02:37:07.3118081Z         "unit": {
2026-06-22T02:37:07.3118299Z           "complete": false,
2026-06-22T02:37:07.3118538Z           "evidence": []
2026-06-22T02:37:07.3118762Z         }
2026-06-22T02:37:07.3119028Z       }
2026-06-22T02:37:07.3119215Z     },
2026-06-22T02:37:07.3119411Z     {
2026-06-22T02:37:07.3119629Z       "id": "REQ-CLI-HELP-MARKDOWN",
2026-06-22T02:37:07.3122768Z       "title": "`spt --help` (and every subcommand --help) renders the inline Markdown authored in the clap doc-comments as terminal styling, never as literal markers: `**bold**` → ANSI bold, `` `code` `` → ANSI cyan, `[text](url)` → `text`. The markers are STRIPPED either way — a raw `**` or backtick must NEVER reach the user (the operator-reported v0.12.0 defect: help text reads `**ctrl-b**` and stray backticks verbatim). Color/bold escapes are emitted ONLY when the help is going to a real terminal AND color is not suppressed (NO_COLOR unset · CLICOLOR != 0 · CLICOLOR_FORCE forces on); a pipe / redirect / CI / NO_COLOR falls back to strip-only (clean plaintext, zero escapes) so machine-readable help is byte-identical regardless of marker syntax. Pure transform over the clap-rendered help string at the single run()/bare_invocation chokepoint; preserves pre-existing ANSI (CSI sequences passed through untouched), never spans markers across a newline, leaves unmatched/empty markers literal, and does not alter the help layout. (v0.12.1)",
2026-06-22T02:37:07.3125973Z       "requiredStages": [
2026-06-22T02:37:07.3126397Z         "impl",
2026-06-22T02:37:07.3126731Z         "unit"
2026-06-22T02:37:07.3127109Z       ],
2026-06-22T02:37:07.3127409Z       "stages": {
2026-06-22T02:37:07.3127695Z         "doc": {
2026-06-22T02:37:07.3128063Z           "complete": false,
2026-06-22T02:37:07.3128410Z           "evidence": []
2026-06-22T02:37:07.3128737Z         },
2026-06-22T02:37:07.3129131Z         "impl": {
2026-06-22T02:37:07.3129441Z           "complete": true,
2026-06-22T02:37:07.3129846Z           "evidence": [
2026-06-22T02:37:07.3130142Z             {
2026-06-22T02:37:07.3130499Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3130906Z               "line": 8
2026-06-22T02:37:07.3131208Z             },
2026-06-22T02:37:07.3131559Z             {
2026-06-22T02:37:07.3131879Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3132299Z               "line": 51
2026-06-22T02:37:07.3132641Z             },
2026-06-22T02:37:07.3132923Z             {
2026-06-22T02:37:07.3133290Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3133652Z               "line": 82
2026-06-22T02:37:07.3133943Z             },
2026-06-22T02:37:07.3134300Z             {
2026-06-22T02:37:07.3134619Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3135063Z               "line": 229
2026-06-22T02:37:07.3135378Z             }
2026-06-22T02:37:07.3135664Z           ]
2026-06-22T02:37:07.3136002Z         },
2026-06-22T02:37:07.3136292Z         "int": {
2026-06-22T02:37:07.3136647Z           "complete": false,
2026-06-22T02:37:07.3136991Z           "evidence": []
2026-06-22T02:37:07.3137310Z         },
2026-06-22T02:37:07.3137654Z         "unit": {
2026-06-22T02:37:07.3137979Z           "complete": true,
2026-06-22T02:37:07.3138327Z           "evidence": [
2026-06-22T02:37:07.3138651Z             {
2026-06-22T02:37:07.3139050Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3139466Z               "line": 249
2026-06-22T02:37:07.3139781Z             },
2026-06-22T02:37:07.3140119Z             {
2026-06-22T02:37:07.3140473Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3140821Z               "line": 256
2026-06-22T02:37:07.3141170Z             },
2026-06-22T02:37:07.3141475Z             {
2026-06-22T02:37:07.3141764Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3142192Z               "line": 263
2026-06-22T02:37:07.3142502Z             },
2026-06-22T02:37:07.3142854Z             {
2026-06-22T02:37:07.3143183Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3143521Z               "line": 270
2026-06-22T02:37:07.3143893Z             },
2026-06-22T02:37:07.3144174Z             {
2026-06-22T02:37:07.3144522Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3144898Z               "line": 297
2026-06-22T02:37:07.3145207Z             },
2026-06-22T02:37:07.3145580Z             {
2026-06-22T02:37:07.3145899Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3146296Z               "line": 307
2026-06-22T02:37:07.3146747Z             },
2026-06-22T02:37:07.3147042Z             {
2026-06-22T02:37:07.3147398Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3147746Z               "line": 317
2026-06-22T02:37:07.3148137Z             },
2026-06-22T02:37:07.3148432Z             {
2026-06-22T02:37:07.3148762Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3149348Z               "line": 331
2026-06-22T02:37:07.3149653Z             },
2026-06-22T02:37:07.3149941Z             {
2026-06-22T02:37:07.3150303Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3150666Z               "line": 340
2026-06-22T02:37:07.3151157Z             },
2026-06-22T02:37:07.3151458Z             {
2026-06-22T02:37:07.3151759Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3152186Z               "line": 348
2026-06-22T02:37:07.3152480Z             }
2026-06-22T02:37:07.3152785Z           ]
2026-06-22T02:37:07.3153090Z         }
2026-06-22T02:37:07.3153381Z       }
2026-06-22T02:37:07.3153743Z     },
2026-06-22T02:37:07.3154020Z     {
2026-06-22T02:37:07.3154340Z       "id": "REQ-CLI-OUTPUT-MARKDOWN",
2026-06-22T02:37:07.3163326Z       "title": "Human-prose COMMAND OUTPUT (not just `--help`) renders the inline Markdown authored in its source strings as terminal styling, never literal markers: `` `code` `` → ANSI cyan, `**bold**` → ANSI bold, `[text](url)` → `text`, markers STRIPPED either way. REQ-CLI-HELP-MARKDOWN only hooked the clap `--help` chokepoint, so command output still printed raw Markdown (audit: `spt how-to` topic text showed `# headers`/backticks, `spt subnet`/`subnet status` hint footers showed stray backticks, the daemon-status `not running` line, the `ENDPOINT_RUN_STARTED` attach hint, and the daemon's `SUBNET_DETACHED` startup line — 13 prose surfaces). The same line-bounded pure `helpfmt::render` is applied at each emit site, color-gated by the OUTPUT STREAM's own tty (`stdout_color` for print/println, the new `stderr_color` for eprintln). HARNESS-SAFETY (binding): color is tty-gated, so an adapter (piped / non-tty / NO_COLOR) gets STRIP mode = zero ANSI + markers removed; every dual-contract MACHINE token on a rendered line (`ENDPOINT_RUN_STARTED:`, `NO_SUCH_TOPIC:`, `SUBNET_DETACHED:`) carries NO Markdown markers, so it survives strip byte-intact — the adapter parse is never perturbed. Pure-machine output (the `<EVENT …>` envelope, bringup parse-tokens SEEDED/BOUND/READY/NO_SEED, `--json`, QR) is NEVER routed through the renderer. The one spt-daemon source string (`SUBNET_DETACHED`, the bin-local renderer is unreachable from the daemon crate) is authored marker-free instead. (v0.12.2)",
2026-06-22T02:37:07.3167582Z       "requiredStages": [
2026-06-22T02:37:07.3167920Z         "impl",
2026-06-22T02:37:07.3168246Z         "unit"
2026-06-22T02:37:07.3168565Z       ],
2026-06-22T02:37:07.3168853Z       "stages": {
2026-06-22T02:37:07.3169320Z         "doc": {
2026-06-22T02:37:07.3169640Z           "complete": false,
2026-06-22T02:37:07.3170040Z           "evidence": []
2026-06-22T02:37:07.3170383Z         },
2026-06-22T02:37:07.3170675Z         "impl": {
2026-06-22T02:37:07.3171029Z           "complete": true,
2026-06-22T02:37:07.3171353Z           "evidence": [
2026-06-22T02:37:07.3171634Z             {
2026-06-22T02:37:07.3172044Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3172439Z               "line": 141
2026-06-22T02:37:07.3172841Z             },
2026-06-22T02:37:07.3173132Z             {
2026-06-22T02:37:07.3173444Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3173862Z               "line": 1376
2026-06-22T02:37:07.3174177Z             },
2026-06-22T02:37:07.3174501Z             {
2026-06-22T02:37:07.3174835Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3175206Z               "line": 2145
2026-06-22T02:37:07.3175593Z             },
2026-06-22T02:37:07.3175883Z             {
2026-06-22T02:37:07.3176226Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3176836Z               "line": 4368
2026-06-22T02:37:07.3177217Z             },
2026-06-22T02:37:07.3177546Z             {
2026-06-22T02:37:07.3177871Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3178297Z               "line": 4466
2026-06-22T02:37:07.3178642Z             },
2026-06-22T02:37:07.3178926Z             {
2026-06-22T02:37:07.3179389Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3179765Z               "line": 5257
2026-06-22T02:37:07.3180056Z             },
2026-06-22T02:37:07.3180409Z             {
2026-06-22T02:37:07.3180873Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3181457Z               "line": 39
2026-06-22T02:37:07.3181774Z             }
2026-06-22T02:37:07.3182045Z           ]
2026-06-22T02:37:07.3182398Z         },
2026-06-22T02:37:07.3182679Z         "int": {
2026-06-22T02:37:07.3183019Z           "complete": false,
2026-06-22T02:37:07.3183357Z           "evidence": []
2026-06-22T02:37:07.3183672Z         },
2026-06-22T02:37:07.3184047Z         "unit": {
2026-06-22T02:37:07.3184355Z           "complete": true,
2026-06-22T02:37:07.3184719Z           "evidence": [
2026-06-22T02:37:07.3185033Z             {
2026-06-22T02:37:07.3185362Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3185761Z               "line": 10272
2026-06-22T02:37:07.3186067Z             },
2026-06-22T02:37:07.3186358Z             {
2026-06-22T02:37:07.3186752Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3187129Z               "line": 281
2026-06-22T02:37:07.3187477Z             },
2026-06-22T02:37:07.3188021Z             {
2026-06-22T02:37:07.3188326Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3188750Z               "line": 358
2026-06-22T02:37:07.3189164Z             },
2026-06-22T02:37:07.3246026Z             {
2026-06-22T02:37:07.3246528Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3246842Z               "line": 381
2026-06-22T02:37:07.3247139Z             },
2026-06-22T02:37:07.3247360Z             {
2026-06-22T02:37:07.3247611Z               "path": "crates/spt/src/helpfmt.rs",
2026-06-22T02:37:07.3247892Z               "line": 395
2026-06-22T02:37:07.3248112Z             }
2026-06-22T02:37:07.3248311Z           ]
2026-06-22T02:37:07.3248508Z         }
2026-06-22T02:37:07.3248685Z       }
2026-06-22T02:37:07.3248870Z     },
2026-06-22T02:37:07.3249175Z     {
2026-06-22T02:37:07.3249390Z       "id": "REQ-CONSENT-1",
2026-06-22T02:37:07.3250457Z       "title": "Consent grant store: capability x subject-agent x target-node rows, enforced at the target node, subnet-settable (replicates as security material near the trust store), revocable; gated-capability ids (remote-exec, instantiate-anywhere) reserved-but-refusing; v1 consumers are the shell spawn gates (CONTEXT Consent & security gates)",
2026-06-22T02:37:07.3251491Z       "requiredStages": [
2026-06-22T02:37:07.3251710Z         "impl",
2026-06-22T02:37:07.3251917Z         "unit"
2026-06-22T02:37:07.3252107Z       ],
2026-06-22T02:37:07.3252303Z       "stages": {
2026-06-22T02:37:07.3252515Z         "doc": {
2026-06-22T02:37:07.3252732Z           "complete": false,
2026-06-22T02:37:07.3252972Z           "evidence": []
2026-06-22T02:37:07.3253186Z         },
2026-06-22T02:37:07.3253376Z         "impl": {
2026-06-22T02:37:07.3253586Z           "complete": true,
2026-06-22T02:37:07.3253816Z           "evidence": [
2026-06-22T02:37:07.3254029Z             {
2026-06-22T02:37:07.3254283Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3254578Z               "line": 27
2026-06-22T02:37:07.3254798Z             },
2026-06-22T02:37:07.3254997Z             {
2026-06-22T02:37:07.3255235Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3255515Z               "line": 75
2026-06-22T02:37:07.3255729Z             },
2026-06-22T02:37:07.3255923Z             {
2026-06-22T02:37:07.3256163Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3256740Z               "line": 98
2026-06-22T02:37:07.3256954Z             },
2026-06-22T02:37:07.3257153Z             {
2026-06-22T02:37:07.3257394Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:37:07.3257661Z               "line": 82
2026-06-22T02:37:07.3257868Z             },
2026-06-22T02:37:07.3258068Z             {
2026-06-22T02:37:07.3258305Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:37:07.3258581Z               "line": 109
2026-06-22T02:37:07.3258805Z             },
2026-06-22T02:37:07.3259105Z             {
2026-06-22T02:37:07.3259353Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:37:07.3259754Z               "line": 127
2026-06-22T02:37:07.3259974Z             },
2026-06-22T02:37:07.3260155Z             {
2026-06-22T02:37:07.3260379Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:37:07.3260650Z               "line": 142
2026-06-22T02:37:07.3260865Z             },
2026-06-22T02:37:07.3261069Z             {
2026-06-22T02:37:07.3261289Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3261556Z               "line": 7048
2026-06-22T02:37:07.3261766Z             }
2026-06-22T02:37:07.3261961Z           ]
2026-06-22T02:37:07.3262138Z         },
2026-06-22T02:37:07.3262328Z         "int": {
2026-06-22T02:37:07.3262548Z           "complete": false,
2026-06-22T02:37:07.3262783Z           "evidence": []
2026-06-22T02:37:07.3263004Z         },
2026-06-22T02:37:07.3263194Z         "unit": {
2026-06-22T02:37:07.3263412Z           "complete": true,
2026-06-22T02:37:07.3263650Z           "evidence": [
2026-06-22T02:37:07.3263870Z             {
2026-06-22T02:37:07.3264118Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3264404Z               "line": 334
2026-06-22T02:37:07.3264637Z             },
2026-06-22T02:37:07.3264838Z             {
2026-06-22T02:37:07.3265077Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3265358Z               "line": 380
2026-06-22T02:37:07.3265577Z             },
2026-06-22T02:37:07.3265777Z             {
2026-06-22T02:37:07.3266009Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3266279Z               "line": 391
2026-06-22T02:37:07.3266502Z             },
2026-06-22T02:37:07.3266699Z             {
2026-06-22T02:37:07.3266933Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:37:07.3267213Z               "line": 165
2026-06-22T02:37:07.3267433Z             },
2026-06-22T02:37:07.3267634Z             {
2026-06-22T02:37:07.3267868Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:37:07.3268139Z               "line": 184
2026-06-22T02:37:07.3268367Z             },
2026-06-22T02:37:07.3268567Z             {
2026-06-22T02:37:07.3268797Z               "path": "crates/spt-store/src/grants.rs",
2026-06-22T02:37:07.3269309Z               "line": 204
2026-06-22T02:37:07.3269529Z             },
2026-06-22T02:37:07.3269727Z             {
2026-06-22T02:37:07.3269957Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3270224Z               "line": 8334
2026-06-22T02:37:07.3270439Z             }
2026-06-22T02:37:07.3270643Z           ]
2026-06-22T02:37:07.3270835Z         }
2026-06-22T02:37:07.3271016Z       }
2026-06-22T02:37:07.3271206Z     },
2026-06-22T02:37:07.3271391Z     {
2026-06-22T02:37:07.3271591Z       "id": "REQ-CONSENT-2",
2026-06-22T02:37:07.3272592Z       "title": "Interactive consent escalation: an ungated high-risk action routes a consent prompt to the user's most-recently-active session; allow-once / allow-always (writes a grant) / deny; pre-consent flags (can_shutdown, shell_wake_spawn_anywhere) author grants via manifest/settings (CONTEXT Consent & security gates)",
2026-06-22T02:37:07.3273559Z       "requiredStages": [
2026-06-22T02:37:07.3273782Z         "impl",
2026-06-22T02:37:07.3273977Z         "unit"
2026-06-22T02:37:07.3274177Z       ],
2026-06-22T02:37:07.3274369Z       "stages": {
2026-06-22T02:37:07.3274683Z         "doc": {
2026-06-22T02:37:07.3274897Z           "complete": false,
2026-06-22T02:37:07.3275130Z           "evidence": []
2026-06-22T02:37:07.3275350Z         },
2026-06-22T02:37:07.3275551Z         "impl": {
2026-06-22T02:37:07.3275774Z           "complete": true,
2026-06-22T02:37:07.3276012Z           "evidence": [
2026-06-22T02:37:07.3276224Z             {
2026-06-22T02:37:07.3276469Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3276748Z               "line": 140
2026-06-22T02:37:07.3276969Z             },
2026-06-22T02:37:07.3277207Z             {
2026-06-22T02:37:07.3277454Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3277846Z               "line": 165
2026-06-22T02:37:07.3278060Z             },
2026-06-22T02:37:07.3278251Z             {
2026-06-22T02:37:07.3278480Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3278757Z               "line": 199
2026-06-22T02:37:07.3279065Z             },
2026-06-22T02:37:07.3279387Z             {
2026-06-22T02:37:07.3279644Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3279925Z               "line": 241
2026-06-22T02:37:07.3280145Z             },
2026-06-22T02:37:07.3280341Z             {
2026-06-22T02:37:07.3280564Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3280837Z               "line": 269
2026-06-22T02:37:07.3281042Z             },
2026-06-22T02:37:07.3281242Z             {
2026-06-22T02:37:07.3281470Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3281748Z               "line": 300
2026-06-22T02:37:07.3281965Z             },
2026-06-22T02:37:07.3282175Z             {
2026-06-22T02:37:07.3282400Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3282672Z               "line": 6839
2026-06-22T02:37:07.3282895Z             },
2026-06-22T02:37:07.3283086Z             {
2026-06-22T02:37:07.3283302Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3283578Z               "line": 6897
2026-06-22T02:37:07.3283801Z             }
2026-06-22T02:37:07.3283996Z           ]
2026-06-22T02:37:07.3284191Z         },
2026-06-22T02:37:07.3284389Z         "int": {
2026-06-22T02:37:07.3284600Z           "complete": false,
2026-06-22T02:37:07.3284842Z           "evidence": []
2026-06-22T02:37:07.3285061Z         },
2026-06-22T02:37:07.3285257Z         "unit": {
2026-06-22T02:37:07.3285487Z           "complete": true,
2026-06-22T02:37:07.3285714Z           "evidence": [
2026-06-22T02:37:07.3285939Z             {
2026-06-22T02:37:07.3286173Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3286455Z               "line": 419
2026-06-22T02:37:07.3286678Z             },
2026-06-22T02:37:07.3286869Z             {
2026-06-22T02:37:07.3287116Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3287409Z               "line": 436
2026-06-22T02:37:07.3287628Z             },
2026-06-22T02:37:07.3287829Z             {
2026-06-22T02:37:07.3288068Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3288348Z               "line": 472
2026-06-22T02:37:07.3288568Z             },
2026-06-22T02:37:07.3288759Z             {
2026-06-22T02:37:07.3289069Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.3289351Z               "line": 516
2026-06-22T02:37:07.3289563Z             },
2026-06-22T02:37:07.3289753Z             {
2026-06-22T02:37:07.3289966Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3290233Z               "line": 9614
2026-06-22T02:37:07.3290457Z             },
2026-06-22T02:37:07.3290649Z             {
2026-06-22T02:37:07.3290872Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3291139Z               "line": 9696
2026-06-22T02:37:07.3291368Z             }
2026-06-22T02:37:07.3291565Z           ]
2026-06-22T02:37:07.3291759Z         }
2026-06-22T02:37:07.3291955Z       }
2026-06-22T02:37:07.3292049Z     },
2026-06-22T02:37:07.3292275Z     {
2026-06-22T02:37:07.3292387Z       "id": "REQ-CONSENT-3",
2026-06-22T02:37:07.3294399Z       "title": "Per-capability approval gates (class-keyed): the require_approval enum may ride INDIVIDUAL [shell.capabilities] entries — gating the dangerous ACT, not just the spawn — with an optional class_key scoping the grant qualifier finer than the capability id ((owner endpoint x device class x node); a remembered HID-class attach grant never authorizes a storage-class attach). Reuses the grant store + interactive escalation + tighten-only floor (REQ-CONSENT-1/2 plumbing). Spawn gates govern EXISTENCE; capability gates govern ACTS — an explicitly distinct invariant (CONTEXT:283, ratified 2026-06-11 Gateway grill).",
2026-06-22T02:37:07.3294627Z       "requiredStages": [
2026-06-22T02:37:07.3294737Z         "doc",
2026-06-22T02:37:07.3294842Z         "impl",
2026-06-22T02:37:07.3294954Z         "unit",
2026-06-22T02:37:07.3295054Z         "int"
2026-06-22T02:37:07.3295160Z       ],
2026-06-22T02:37:07.3295264Z       "stages": {
2026-06-22T02:37:07.3295369Z         "doc": {
2026-06-22T02:37:07.3295484Z           "complete": true,
2026-06-22T02:37:07.3295583Z           "evidence": [
2026-06-22T02:37:07.3295693Z             {
2026-06-22T02:37:07.3295808Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.3295917Z               "line": 304
2026-06-22T02:37:07.3296023Z             }
2026-06-22T02:37:07.3296127Z           ]
2026-06-22T02:37:07.3296236Z         },
2026-06-22T02:37:07.3296347Z         "impl": {
2026-06-22T02:37:07.3296460Z           "complete": true,
2026-06-22T02:37:07.3296570Z           "evidence": [
2026-06-22T02:37:07.3296667Z             {
2026-06-22T02:37:07.3296832Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.3296947Z               "line": 123
2026-06-22T02:37:07.3297058Z             },
2026-06-22T02:37:07.3297156Z             {
2026-06-22T02:37:07.3297310Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.3297419Z               "line": 162
2026-06-22T02:37:07.3297533Z             },
2026-06-22T02:37:07.3297637Z             {
2026-06-22T02:37:07.3297783Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.3297897Z               "line": 291
2026-06-22T02:37:07.3297993Z             },
2026-06-22T02:37:07.3298093Z             {
2026-06-22T02:37:07.3298231Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.3298341Z               "line": 574
2026-06-22T02:37:07.3298446Z             },
2026-06-22T02:37:07.3298550Z             {
2026-06-22T02:37:07.3298699Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.3298808Z               "line": 824
2026-06-22T02:37:07.3298913Z             },
2026-06-22T02:37:07.3299094Z             {
2026-06-22T02:37:07.3299223Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3299333Z               "line": 6965
2026-06-22T02:37:07.3299428Z             }
2026-06-22T02:37:07.3299534Z           ]
2026-06-22T02:37:07.3299629Z         },
2026-06-22T02:37:07.3299733Z         "int": {
2026-06-22T02:37:07.3299844Z           "complete": true,
2026-06-22T02:37:07.3299963Z           "evidence": [
2026-06-22T02:37:07.3300066Z             {
2026-06-22T02:37:07.3300224Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T02:37:07.3300331Z               "line": 16
2026-06-22T02:37:07.3300435Z             }
2026-06-22T02:37:07.3300546Z           ]
2026-06-22T02:37:07.3300646Z         },
2026-06-22T02:37:07.3300754Z         "unit": {
2026-06-22T02:37:07.3300865Z           "complete": true,
2026-06-22T02:37:07.3300965Z           "evidence": [
2026-06-22T02:37:07.3301069Z             {
2026-06-22T02:37:07.3301218Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.3301332Z               "line": 1019
2026-06-22T02:37:07.3301432Z             },
2026-06-22T02:37:07.3301538Z             {
2026-06-22T02:37:07.3301675Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.3301895Z               "line": 1066
2026-06-22T02:37:07.3301986Z             },
2026-06-22T02:37:07.3302086Z             {
2026-06-22T02:37:07.3302238Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.3302333Z               "line": 1394
2026-06-22T02:37:07.3302435Z             }
2026-06-22T02:37:07.3302543Z           ]
2026-06-22T02:37:07.3302634Z         }
2026-06-22T02:37:07.3302740Z       }
2026-06-22T02:37:07.3302840Z     },
2026-06-22T02:37:07.3302943Z     {
2026-06-22T02:37:07.3303091Z       "id": "REQ-CONV-1",
2026-06-22T02:37:07.3304501Z       "title": "Peer address seeding, both cold starts: durable peer-addrs.json (identity dir) maps peer pubkey → last-known dialable address; the pump's resolver consults it FIRST with id-only discovery fallback on miss or dial failure (a stale addr never strands a peer); written by the pairing ceremony (both sides, from the live connection) and by the pump on successful connect; post-join first sync and post-restart resync converge in seconds, not ~1 min (M8 decisions 14, 20)",
2026-06-22T02:37:07.3304751Z       "requiredStages": [
2026-06-22T02:37:07.3304854Z         "impl",
2026-06-22T02:37:07.3304964Z         "unit"
2026-06-22T02:37:07.3305061Z       ],
2026-06-22T02:37:07.3305173Z       "stages": {
2026-06-22T02:37:07.3305282Z         "doc": {
2026-06-22T02:37:07.3305383Z           "complete": false,
2026-06-22T02:37:07.3305490Z           "evidence": []
2026-06-22T02:37:07.3305594Z         },
2026-06-22T02:37:07.3305696Z         "impl": {
2026-06-22T02:37:07.3305810Z           "complete": true,
2026-06-22T02:37:07.3305924Z           "evidence": [
2026-06-22T02:37:07.3306030Z             {
2026-06-22T02:37:07.3306186Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3306297Z               "line": 938
2026-06-22T02:37:07.3306401Z             },
2026-06-22T02:37:07.3306505Z             {
2026-06-22T02:37:07.3306650Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.3306768Z               "line": 94
2026-06-22T02:37:07.3306877Z             },
2026-06-22T02:37:07.3306979Z             {
2026-06-22T02:37:07.3307130Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.3307236Z               "line": 345
2026-06-22T02:37:07.3307345Z             },
2026-06-22T02:37:07.3307450Z             {
2026-06-22T02:37:07.3307590Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.3307697Z               "line": 387
2026-06-22T02:37:07.3307798Z             },
2026-06-22T02:37:07.3307904Z             {
2026-06-22T02:37:07.3308041Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.3308159Z               "line": 472
2026-06-22T02:37:07.3308260Z             },
2026-06-22T02:37:07.3308367Z             {
2026-06-22T02:37:07.3308519Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3308625Z               "line": 667
2026-06-22T02:37:07.3308734Z             },
2026-06-22T02:37:07.3308834Z             {
2026-06-22T02:37:07.3309048Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3309154Z               "line": 693
2026-06-22T02:37:07.3309254Z             },
2026-06-22T02:37:07.3309349Z             {
2026-06-22T02:37:07.3309498Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.3309621Z               "line": 369
2026-06-22T02:37:07.3309712Z             },
2026-06-22T02:37:07.3309823Z             {
2026-06-22T02:37:07.3309974Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:37:07.3310079Z               "line": 19
2026-06-22T02:37:07.3310184Z             }
2026-06-22T02:37:07.3310293Z           ]
2026-06-22T02:37:07.3310404Z         },
2026-06-22T02:37:07.3310509Z         "int": {
2026-06-22T02:37:07.3310626Z           "complete": false,
2026-06-22T02:37:07.3310736Z           "evidence": []
2026-06-22T02:37:07.3310835Z         },
2026-06-22T02:37:07.3310939Z         "unit": {
2026-06-22T02:37:07.3311048Z           "complete": true,
2026-06-22T02:37:07.3311263Z           "evidence": [
2026-06-22T02:37:07.3311368Z             {
2026-06-22T02:37:07.3311516Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3311620Z               "line": 1263
2026-06-22T02:37:07.3311721Z             },
2026-06-22T02:37:07.3311831Z             {
2026-06-22T02:37:07.3311972Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:37:07.3312074Z               "line": 108
2026-06-22T02:37:07.3312178Z             },
2026-06-22T02:37:07.3312283Z             {
2026-06-22T02:37:07.3312422Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:37:07.3312621Z               "line": 134
2026-06-22T02:37:07.3312732Z             },
2026-06-22T02:37:07.3312831Z             {
2026-06-22T02:37:07.3312975Z               "path": "crates/spt-store/src/peeraddrs.rs",
2026-06-22T02:37:07.3313071Z               "line": 144
2026-06-22T02:37:07.3313179Z             }
2026-06-22T02:37:07.3313290Z           ]
2026-06-22T02:37:07.3313400Z         }
2026-06-22T02:37:07.3313498Z       }
2026-06-22T02:37:07.3313593Z     },
2026-06-22T02:37:07.3313699Z     {
2026-06-22T02:37:07.3313803Z       "id": "REQ-CONV-2",
2026-06-22T02:37:07.3314939Z       "title": "Event-driven advertisement: endpoint online/offline transitions (ready-listener start/stop, rest-state transition, perch death) trigger an immediate advertise_local + peer push as a WAKE of the existing pump loop (no second advertisement path — epoch lease + visibility gates ride unchanged); the cadence stays the steady-state floor (M8 decision 15)",
2026-06-22T02:37:07.3315052Z       "requiredStages": [
2026-06-22T02:37:07.3315162Z         "impl",
2026-06-22T02:37:07.3315268Z         "unit"
2026-06-22T02:37:07.3315367Z       ],
2026-06-22T02:37:07.3315472Z       "stages": {
2026-06-22T02:37:07.3315573Z         "doc": {
2026-06-22T02:37:07.3315686Z           "complete": false,
2026-06-22T02:37:07.3315800Z           "evidence": []
2026-06-22T02:37:07.3315900Z         },
2026-06-22T02:37:07.3316013Z         "impl": {
2026-06-22T02:37:07.3316131Z           "complete": true,
2026-06-22T02:37:07.3316246Z           "evidence": [
2026-06-22T02:37:07.3316356Z             {
2026-06-22T02:37:07.3316508Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3316623Z               "line": 409
2026-06-22T02:37:07.3316722Z             },
2026-06-22T02:37:07.3316828Z             {
2026-06-22T02:37:07.3316986Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:37:07.3317104Z               "line": 119
2026-06-22T02:37:07.3317210Z             },
2026-06-22T02:37:07.3317310Z             {
2026-06-22T02:37:07.3317472Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.3317581Z               "line": 841
2026-06-22T02:37:07.3317690Z             },
2026-06-22T02:37:07.3317792Z             {
2026-06-22T02:37:07.3317947Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.3318058Z               "line": 852
2026-06-22T02:37:07.3318159Z             },
2026-06-22T02:37:07.3318267Z             {
2026-06-22T02:37:07.3318412Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.3318526Z               "line": 334
2026-06-22T02:37:07.3318629Z             },
2026-06-22T02:37:07.3318729Z             {
2026-06-22T02:37:07.3318857Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3319041Z               "line": 3074
2026-06-22T02:37:07.3319142Z             },
2026-06-22T02:37:07.3319246Z             {
2026-06-22T02:37:07.3319380Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3319485Z               "line": 3090
2026-06-22T02:37:07.3319599Z             },
2026-06-22T02:37:07.3319705Z             {
2026-06-22T02:37:07.3319828Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3319947Z               "line": 3170
2026-06-22T02:37:07.3320048Z             }
2026-06-22T02:37:07.3320152Z           ]
2026-06-22T02:37:07.3320349Z         },
2026-06-22T02:37:07.3320453Z         "int": {
2026-06-22T02:37:07.3320577Z           "complete": false,
2026-06-22T02:37:07.3320678Z           "evidence": []
2026-06-22T02:37:07.3320782Z         },
2026-06-22T02:37:07.3320882Z         "unit": {
2026-06-22T02:37:07.3321002Z           "complete": true,
2026-06-22T02:37:07.3321102Z           "evidence": [
2026-06-22T02:37:07.3321210Z             {
2026-06-22T02:37:07.3321363Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3321470Z               "line": 889
2026-06-22T02:37:07.3321574Z             },
2026-06-22T02:37:07.3321671Z             {
2026-06-22T02:37:07.3321818Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3322033Z               "line": 1014
2026-06-22T02:37:07.3322137Z             },
2026-06-22T02:37:07.3322242Z             {
2026-06-22T02:37:07.3322395Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:37:07.3322504Z               "line": 215
2026-06-22T02:37:07.3322611Z             }
2026-06-22T02:37:07.3322714Z           ]
2026-06-22T02:37:07.3322819Z         }
2026-06-22T02:37:07.3322910Z       }
2026-06-22T02:37:07.3323015Z     },
2026-06-22T02:37:07.3323110Z     {
2026-06-22T02:37:07.3323230Z       "id": "REQ-DAEMON-1",
2026-06-22T02:37:07.3323420Z       "title": "One per-machine spt-daemon owning all per-machine state",
2026-06-22T02:37:07.3323540Z       "requiredStages": [
2026-06-22T02:37:07.3323649Z         "impl",
2026-06-22T02:37:07.3323744Z         "unit",
2026-06-22T02:37:07.3323850Z         "int"
2026-06-22T02:37:07.3323950Z       ],
2026-06-22T02:37:07.3324058Z       "stages": {
2026-06-22T02:37:07.3324168Z         "doc": {
2026-06-22T02:37:07.3324278Z           "complete": false,
2026-06-22T02:37:07.3324387Z           "evidence": []
2026-06-22T02:37:07.3324492Z         },
2026-06-22T02:37:07.3324588Z         "impl": {
2026-06-22T02:37:07.3324697Z           "complete": true,
2026-06-22T02:37:07.3324802Z           "evidence": [
2026-06-22T02:37:07.3324908Z             {
2026-06-22T02:37:07.3325055Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3325165Z               "line": 229
2026-06-22T02:37:07.3325270Z             },
2026-06-22T02:37:07.3325379Z             {
2026-06-22T02:37:07.3325523Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.3325636Z               "line": 12
2026-06-22T02:37:07.3325736Z             },
2026-06-22T02:37:07.3325842Z             {
2026-06-22T02:37:07.3325989Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3326099Z               "line": 16
2026-06-22T02:37:07.3326204Z             },
2026-06-22T02:37:07.3326312Z             {
2026-06-22T02:37:07.3326460Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3326573Z               "line": 309
2026-06-22T02:37:07.3326677Z             },
2026-06-22T02:37:07.3326773Z             {
2026-06-22T02:37:07.3326911Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3327025Z               "line": 24
2026-06-22T02:37:07.3327126Z             },
2026-06-22T02:37:07.3327231Z             {
2026-06-22T02:37:07.3327373Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3327484Z               "line": 262
2026-06-22T02:37:07.3327583Z             },
2026-06-22T02:37:07.3327688Z             {
2026-06-22T02:37:07.3327841Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3327940Z               "line": 279
2026-06-22T02:37:07.3328051Z             },
2026-06-22T02:37:07.3328156Z             {
2026-06-22T02:37:07.3328293Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3328409Z               "line": 356
2026-06-22T02:37:07.3328512Z             },
2026-06-22T02:37:07.3328613Z             {
2026-06-22T02:37:07.3328757Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3328861Z               "line": 670
2026-06-22T02:37:07.3329024Z             },
2026-06-22T02:37:07.3329223Z             {
2026-06-22T02:37:07.3329370Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:37:07.3329478Z               "line": 15
2026-06-22T02:37:07.3336001Z             },
2026-06-22T02:37:07.3336149Z             {
2026-06-22T02:37:07.3336311Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3336426Z               "line": 241
2026-06-22T02:37:07.3336539Z             },
2026-06-22T02:37:07.3336635Z             {
2026-06-22T02:37:07.3336779Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T02:37:07.3336882Z               "line": 13
2026-06-22T02:37:07.3336977Z             },
2026-06-22T02:37:07.3337266Z             {
2026-06-22T02:37:07.3337405Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3337523Z               "line": 382
2026-06-22T02:37:07.3337633Z             },
2026-06-22T02:37:07.3337734Z             {
2026-06-22T02:37:07.3337871Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3337987Z               "line": 494
2026-06-22T02:37:07.3338091Z             }
2026-06-22T02:37:07.3338195Z           ]
2026-06-22T02:37:07.3338288Z         },
2026-06-22T02:37:07.3338382Z         "int": {
2026-06-22T02:37:07.3338496Z           "complete": true,
2026-06-22T02:37:07.3338602Z           "evidence": [
2026-06-22T02:37:07.3338701Z             {
2026-06-22T02:37:07.3338892Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T02:37:07.3339082Z               "line": 2
2026-06-22T02:37:07.3339173Z             },
2026-06-22T02:37:07.3339275Z             {
2026-06-22T02:37:07.3339473Z               "path": "crates/spt-daemon/tests/daemon_lifecycle_real_brain.rs",
2026-06-22T02:37:07.3339585Z               "line": 16
2026-06-22T02:37:07.3339679Z             },
2026-06-22T02:37:07.3339783Z             {
2026-06-22T02:37:07.3339963Z               "path": "crates/spt/tests/live_bind_firsthost_e2e.rs",
2026-06-22T02:37:07.3340066Z               "line": 12
2026-06-22T02:37:07.3340166Z             },
2026-06-22T02:37:07.3340268Z             {
2026-06-22T02:37:07.3340428Z               "path": "crates/spt/tests/live_firsthost_e2e.rs",
2026-06-22T02:37:07.3340529Z               "line": 12
2026-06-22T02:37:07.3340639Z             },
2026-06-22T02:37:07.3340738Z             {
2026-06-22T02:37:07.3340897Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:37:07.3341006Z               "line": 44
2026-06-22T02:37:07.3341111Z             }
2026-06-22T02:37:07.3341202Z           ]
2026-06-22T02:37:07.3341301Z         },
2026-06-22T02:37:07.3341411Z         "unit": {
2026-06-22T02:37:07.3341536Z           "complete": true,
2026-06-22T02:37:07.3341644Z           "evidence": [
2026-06-22T02:37:07.3341740Z             {
2026-06-22T02:37:07.3341884Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.3341993Z               "line": 285
2026-06-22T02:37:07.3342094Z             },
2026-06-22T02:37:07.3342204Z             {
2026-06-22T02:37:07.3342345Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.3342449Z               "line": 293
2026-06-22T02:37:07.3342549Z             },
2026-06-22T02:37:07.3342652Z             {
2026-06-22T02:37:07.3342800Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.3342901Z               "line": 309
2026-06-22T02:37:07.3343010Z             },
2026-06-22T02:37:07.3343116Z             {
2026-06-22T02:37:07.3343253Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.3343362Z               "line": 317
2026-06-22T02:37:07.3343459Z             },
2026-06-22T02:37:07.3343568Z             {
2026-06-22T02:37:07.3343712Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3343820Z               "line": 659
2026-06-22T02:37:07.3343925Z             },
2026-06-22T02:37:07.3344026Z             {
2026-06-22T02:37:07.3344178Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3344389Z               "line": 729
2026-06-22T02:37:07.3344497Z             },
2026-06-22T02:37:07.3344598Z             {
2026-06-22T02:37:07.3344742Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3344855Z               "line": 1211
2026-06-22T02:37:07.3344956Z             },
2026-06-22T02:37:07.3345066Z             {
2026-06-22T02:37:07.3345207Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3345312Z               "line": 1248
2026-06-22T02:37:07.3345408Z             },
2026-06-22T02:37:07.3345512Z             {
2026-06-22T02:37:07.3345660Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3345865Z               "line": 1271
2026-06-22T02:37:07.3345971Z             },
2026-06-22T02:37:07.3346075Z             {
2026-06-22T02:37:07.3346222Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3346333Z               "line": 1300
2026-06-22T02:37:07.3346437Z             },
2026-06-22T02:37:07.3346546Z             {
2026-06-22T02:37:07.3346695Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3346804Z               "line": 1348
2026-06-22T02:37:07.3346905Z             },
2026-06-22T02:37:07.3347010Z             {
2026-06-22T02:37:07.3347152Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3347249Z               "line": 1391
2026-06-22T02:37:07.3347352Z             },
2026-06-22T02:37:07.3347456Z             {
2026-06-22T02:37:07.3347605Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:37:07.3347712Z               "line": 106
2026-06-22T02:37:07.3347806Z             },
2026-06-22T02:37:07.3347917Z             {
2026-06-22T02:37:07.3348050Z               "path": "crates/spt-daemon/src/relay.rs",
2026-06-22T02:37:07.3348160Z               "line": 132
2026-06-22T02:37:07.3348261Z             },
2026-06-22T02:37:07.3348365Z             {
2026-06-22T02:37:07.3348503Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3348613Z               "line": 530
2026-06-22T02:37:07.3348713Z             }
2026-06-22T02:37:07.3348813Z           ]
2026-06-22T02:37:07.3348923Z         }
2026-06-22T02:37:07.3349610Z       }
2026-06-22T02:37:07.3349714Z     },
2026-06-22T02:37:07.3349816Z     {
2026-06-22T02:37:07.3349933Z       "id": "REQ-DAEMON-2",
2026-06-22T02:37:07.3350092Z       "title": "Broker/brain split for seamless self-update",
2026-06-22T02:37:07.3350206Z       "requiredStages": [
2026-06-22T02:37:07.3350305Z         "impl",
2026-06-22T02:37:07.3350404Z         "unit",
2026-06-22T02:37:07.3350509Z         "int"
2026-06-22T02:37:07.3350613Z       ],
2026-06-22T02:37:07.3350731Z       "stages": {
2026-06-22T02:37:07.3350833Z         "doc": {
2026-06-22T02:37:07.3350937Z           "complete": true,
2026-06-22T02:37:07.3351051Z           "evidence": [
2026-06-22T02:37:07.3351147Z             {
2026-06-22T02:37:07.3351303Z               "path": "docs/TWO-HOST-RUNBOOK.md",
2026-06-22T02:37:07.3351414Z               "line": 250
2026-06-22T02:37:07.3351523Z             }
2026-06-22T02:37:07.3351627Z           ]
2026-06-22T02:37:07.3351714Z         },
2026-06-22T02:37:07.3351819Z         "impl": {
2026-06-22T02:37:07.3351928Z           "complete": true,
2026-06-22T02:37:07.3352034Z           "evidence": [
2026-06-22T02:37:07.3352139Z             {
2026-06-22T02:37:07.3352276Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3352378Z               "line": 23
2026-06-22T02:37:07.3352482Z             },
2026-06-22T02:37:07.3352586Z             {
2026-06-22T02:37:07.3352721Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3352834Z               "line": 922
2026-06-22T02:37:07.3352928Z             },
2026-06-22T02:37:07.3353033Z             {
2026-06-22T02:37:07.3353165Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3353269Z               "line": 963
2026-06-22T02:37:07.3353375Z             },
2026-06-22T02:37:07.3353475Z             {
2026-06-22T02:37:07.3353728Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3353837Z               "line": 1199
2026-06-22T02:37:07.3353947Z             },
2026-06-22T02:37:07.3354047Z             {
2026-06-22T02:37:07.3354189Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3354305Z               "line": 32
2026-06-22T02:37:07.3354404Z             },
2026-06-22T02:37:07.3354504Z             {
2026-06-22T02:37:07.3354644Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3354758Z               "line": 1151
2026-06-22T02:37:07.3354862Z             },
2026-06-22T02:37:07.3355062Z             {
2026-06-22T02:37:07.3355206Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3355307Z               "line": 1865
2026-06-22T02:37:07.3355410Z             },
2026-06-22T02:37:07.3355516Z             {
2026-06-22T02:37:07.3355659Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3355782Z               "line": 2152
2026-06-22T02:37:07.3355877Z             },
2026-06-22T02:37:07.3355978Z             {
2026-06-22T02:37:07.3356115Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:37:07.3356230Z               "line": 11
2026-06-22T02:37:07.3356335Z             },
2026-06-22T02:37:07.3356439Z             {
2026-06-22T02:37:07.3356583Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3356683Z               "line": 153
2026-06-22T02:37:07.3356782Z             },
2026-06-22T02:37:07.3356874Z             {
2026-06-22T02:37:07.3357012Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3357121Z               "line": 343
2026-06-22T02:37:07.3357227Z             },
2026-06-22T02:37:07.3357327Z             {
2026-06-22T02:37:07.3357451Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3357556Z               "line": 13
2026-06-22T02:37:07.3357655Z             },
2026-06-22T02:37:07.3357755Z             {
2026-06-22T02:37:07.3357931Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3358045Z               "line": 27
2026-06-22T02:37:07.3358165Z             },
2026-06-22T02:37:07.3358263Z             {
2026-06-22T02:37:07.3358400Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3358501Z               "line": 147
2026-06-22T02:37:07.3358610Z             },
2026-06-22T02:37:07.3358700Z             {
2026-06-22T02:37:07.3358840Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3359024Z               "line": 632
2026-06-22T02:37:07.3359121Z             },
2026-06-22T02:37:07.3359235Z             {
2026-06-22T02:37:07.3359369Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3359474Z               "line": 853
2026-06-22T02:37:07.3359578Z             },
2026-06-22T02:37:07.3359674Z             {
2026-06-22T02:37:07.3359817Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3359931Z               "line": 1000
2026-06-22T02:37:07.3360032Z             },
2026-06-22T02:37:07.3360132Z             {
2026-06-22T02:37:07.3360279Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3360386Z               "line": 1089
2026-06-22T02:37:07.3360489Z             },
2026-06-22T02:37:07.3360585Z             {
2026-06-22T02:37:07.3360724Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3360827Z               "line": 1211
2026-06-22T02:37:07.3360917Z             },
2026-06-22T02:37:07.3361013Z             {
2026-06-22T02:37:07.3361158Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:37:07.3361272Z               "line": 10
2026-06-22T02:37:07.3361373Z             }
2026-06-22T02:37:07.3361478Z           ]
2026-06-22T02:37:07.3361582Z         },
2026-06-22T02:37:07.3361683Z         "int": {
2026-06-22T02:37:07.3361793Z           "complete": true,
2026-06-22T02:37:07.3361896Z           "evidence": [
2026-06-22T02:37:07.3362103Z             {
2026-06-22T02:37:07.3362255Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.3362351Z               "line": 17
2026-06-22T02:37:07.3362460Z             },
2026-06-22T02:37:07.3362550Z             {
2026-06-22T02:37:07.3362699Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:37:07.3362808Z               "line": 90
2026-06-22T02:37:07.3362909Z             },
2026-06-22T02:37:07.3363009Z             {
2026-06-22T02:37:07.3363156Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:37:07.3363262Z               "line": 110
2026-06-22T02:37:07.3363366Z             },
2026-06-22T02:37:07.3363565Z             {
2026-06-22T02:37:07.3363720Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:37:07.3363829Z               "line": 186
2026-06-22T02:37:07.3363930Z             },
2026-06-22T02:37:07.3364031Z             {
2026-06-22T02:37:07.3364177Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:37:07.3364293Z               "line": 309
2026-06-22T02:37:07.3364392Z             },
2026-06-22T02:37:07.3364497Z             {
2026-06-22T02:37:07.3364631Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T02:37:07.3364735Z               "line": 128
2026-06-22T02:37:07.3364837Z             },
2026-06-22T02:37:07.3364932Z             {
2026-06-22T02:37:07.3365069Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:37:07.3365180Z               "line": 59
2026-06-22T02:37:07.3365279Z             }
2026-06-22T02:37:07.3365379Z           ]
2026-06-22T02:37:07.3365481Z         },
2026-06-22T02:37:07.3365599Z         "unit": {
2026-06-22T02:37:07.3365708Z           "complete": true,
2026-06-22T02:37:07.3365805Z           "evidence": [
2026-06-22T02:37:07.3365909Z             {
2026-06-22T02:37:07.3366037Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:37:07.3366143Z               "line": 62
2026-06-22T02:37:07.3366252Z             },
2026-06-22T02:37:07.3366351Z             {
2026-06-22T02:37:07.3366490Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:37:07.3366595Z               "line": 76
2026-06-22T02:37:07.3366694Z             },
2026-06-22T02:37:07.3366785Z             {
2026-06-22T02:37:07.3366924Z               "path": "crates/spt-daemon/src/codec.rs",
2026-06-22T02:37:07.3367033Z               "line": 88
2026-06-22T02:37:07.3367134Z             },
2026-06-22T02:37:07.3367234Z             {
2026-06-22T02:37:07.3367376Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.3367482Z               "line": 347
2026-06-22T02:37:07.3367591Z             },
2026-06-22T02:37:07.3367686Z             {
2026-06-22T02:37:07.3367825Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3367934Z               "line": 901
2026-06-22T02:37:07.3368040Z             },
2026-06-22T02:37:07.3368140Z             {
2026-06-22T02:37:07.3368272Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3368389Z               "line": 909
2026-06-22T02:37:07.3368492Z             },
2026-06-22T02:37:07.3368586Z             {
2026-06-22T02:37:07.3368720Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3368827Z               "line": 926
2026-06-22T02:37:07.3368932Z             },
2026-06-22T02:37:07.3369105Z             {
2026-06-22T02:37:07.3369237Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3369338Z               "line": 1035
2026-06-22T02:37:07.3369443Z             },
2026-06-22T02:37:07.3369542Z             {
2026-06-22T02:37:07.3369682Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3369800Z               "line": 1282
2026-06-22T02:37:07.3369890Z             },
2026-06-22T02:37:07.3369997Z             {
2026-06-22T02:37:07.3370129Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3370238Z               "line": 1294
2026-06-22T02:37:07.3370448Z             },
2026-06-22T02:37:07.3370548Z             {
2026-06-22T02:37:07.3370696Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:37:07.3370797Z               "line": 110
2026-06-22T02:37:07.3370902Z             },
2026-06-22T02:37:07.3371002Z             {
2026-06-22T02:37:07.3371145Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:37:07.3371256Z               "line": 145
2026-06-22T02:37:07.3371354Z             }
2026-06-22T02:37:07.3371458Z           ]
2026-06-22T02:37:07.3371558Z         }
2026-06-22T02:37:07.3371648Z       }
2026-06-22T02:37:07.3371742Z     },
2026-06-22T02:37:07.3371842Z     {
2026-06-22T02:37:07.3372076Z       "id": "REQ-DAEMON-3",
2026-06-22T02:37:07.3372258Z       "title": "Any api invocation auto-starts the daemon if absent",
2026-06-22T02:37:07.3372367Z       "requiredStages": [
2026-06-22T02:37:07.3372466Z         "impl",
2026-06-22T02:37:07.3372572Z         "unit",
2026-06-22T02:37:07.3372672Z         "int"
2026-06-22T02:37:07.3372786Z       ],
2026-06-22T02:37:07.3372887Z       "stages": {
2026-06-22T02:37:07.3372982Z         "doc": {
2026-06-22T02:37:07.3373096Z           "complete": false,
2026-06-22T02:37:07.3373202Z           "evidence": []
2026-06-22T02:37:07.3373301Z         },
2026-06-22T02:37:07.3373406Z         "impl": {
2026-06-22T02:37:07.3373522Z           "complete": true,
2026-06-22T02:37:07.3373630Z           "evidence": [
2026-06-22T02:37:07.3373730Z             {
2026-06-22T02:37:07.3373865Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3373973Z               "line": 14
2026-06-22T02:37:07.3374077Z             },
2026-06-22T02:37:07.3374187Z             {
2026-06-22T02:37:07.3374341Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:37:07.3374447Z               "line": 11
2026-06-22T02:37:07.3374538Z             },
2026-06-22T02:37:07.3374638Z             {
2026-06-22T02:37:07.3374772Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.3374881Z               "line": 305
2026-06-22T02:37:07.3374985Z             },
2026-06-22T02:37:07.3375092Z             {
2026-06-22T02:37:07.3375220Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3375328Z               "line": 1956
2026-06-22T02:37:07.3375435Z             },
2026-06-22T02:37:07.3375539Z             {
2026-06-22T02:37:07.3375668Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3375778Z               "line": 4235
2026-06-22T02:37:07.3375878Z             },
2026-06-22T02:37:07.3375987Z             {
2026-06-22T02:37:07.3376278Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3376492Z               "line": 4256
2026-06-22T02:37:07.3376622Z             }
2026-06-22T02:37:07.3376723Z           ]
2026-06-22T02:37:07.3376817Z         },
2026-06-22T02:37:07.3376925Z         "int": {
2026-06-22T02:37:07.3377050Z           "complete": true,
2026-06-22T02:37:07.3377155Z           "evidence": [
2026-06-22T02:37:07.3377264Z             {
2026-06-22T02:37:07.3377436Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.3377550Z               "line": 49
2026-06-22T02:37:07.3377651Z             },
2026-06-22T02:37:07.3377750Z             {
2026-06-22T02:37:07.3377898Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.3378009Z               "line": 487
2026-06-22T02:37:07.3378108Z             }
2026-06-22T02:37:07.3378203Z           ]
2026-06-22T02:37:07.3378304Z         },
2026-06-22T02:37:07.3378413Z         "unit": {
2026-06-22T02:37:07.3378532Z           "complete": true,
2026-06-22T02:37:07.3378638Z           "evidence": [
2026-06-22T02:37:07.3378737Z             {
2026-06-22T02:37:07.3378895Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3379094Z               "line": 1553
2026-06-22T02:37:07.3379198Z             },
2026-06-22T02:37:07.3379304Z             {
2026-06-22T02:37:07.3379430Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3379874Z               "line": 10715
2026-06-22T02:37:07.3379974Z             }
2026-06-22T02:37:07.3380083Z           ]
2026-06-22T02:37:07.3380184Z         }
2026-06-22T02:37:07.3380289Z       }
2026-06-22T02:37:07.3380388Z     },
2026-06-22T02:37:07.3380484Z     {
2026-06-22T02:37:07.3380604Z       "id": "REQ-DAEMON-4",
2026-06-22T02:37:07.3380746Z       "title": "Honor every KNOWN-HAZARDS invariant",
2026-06-22T02:37:07.3380862Z       "requiredStages": [
2026-06-22T02:37:07.3380965Z         "impl",
2026-06-22T02:37:07.3381070Z         "unit",
2026-06-22T02:37:07.3381172Z         "int"
2026-06-22T02:37:07.3381275Z       ],
2026-06-22T02:37:07.3381375Z       "stages": {
2026-06-22T02:37:07.3381590Z         "doc": {
2026-06-22T02:37:07.3381710Z           "complete": false,
2026-06-22T02:37:07.3381821Z           "evidence": []
2026-06-22T02:37:07.3381924Z         },
2026-06-22T02:37:07.3382028Z         "impl": {
2026-06-22T02:37:07.3382142Z           "complete": true,
2026-06-22T02:37:07.3382260Z           "evidence": [
2026-06-22T02:37:07.3382354Z             {
2026-06-22T02:37:07.3382508Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3382617Z               "line": 464
2026-06-22T02:37:07.3382721Z             },
2026-06-22T02:37:07.3382827Z             {
2026-06-22T02:37:07.3382984Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3383090Z               "line": 529
2026-06-22T02:37:07.3383194Z             },
2026-06-22T02:37:07.3383303Z             {
2026-06-22T02:37:07.3383443Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3383556Z               "line": 551
2026-06-22T02:37:07.3383666Z             }
2026-06-22T02:37:07.3383763Z           ]
2026-06-22T02:37:07.3383861Z         },
2026-06-22T02:37:07.3383966Z         "int": {
2026-06-22T02:37:07.3384077Z           "complete": true,
2026-06-22T02:37:07.3384185Z           "evidence": [
2026-06-22T02:37:07.3384295Z             {
2026-06-22T02:37:07.3384444Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T02:37:07.3384557Z               "line": 42
2026-06-22T02:37:07.3384666Z             }
2026-06-22T02:37:07.3384770Z           ]
2026-06-22T02:37:07.3384874Z         },
2026-06-22T02:37:07.3384974Z         "unit": {
2026-06-22T02:37:07.3385089Z           "complete": true,
2026-06-22T02:37:07.3385198Z           "evidence": [
2026-06-22T02:37:07.3385303Z             {
2026-06-22T02:37:07.3385451Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.3385555Z               "line": 428
2026-06-22T02:37:07.3385657Z             },
2026-06-22T02:37:07.3385761Z             {
2026-06-22T02:37:07.3385908Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3386023Z               "line": 957
2026-06-22T02:37:07.3386133Z             },
2026-06-22T02:37:07.3386247Z             {
2026-06-22T02:37:07.3386400Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3386523Z               "line": 1027
2026-06-22T02:37:07.3386620Z             },
2026-06-22T02:37:07.3386724Z             {
2026-06-22T02:37:07.3386877Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3386987Z               "line": 1057
2026-06-22T02:37:07.3387095Z             },
2026-06-22T02:37:07.3387187Z             {
2026-06-22T02:37:07.3387335Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3387442Z               "line": 1090
2026-06-22T02:37:07.3387547Z             }
2026-06-22T02:37:07.3387649Z           ]
2026-06-22T02:37:07.3387753Z         }
2026-06-22T02:37:07.3387862Z       }
2026-06-22T02:37:07.3387959Z     },
2026-06-22T02:37:07.3388072Z     {
2026-06-22T02:37:07.3388187Z       "id": "REQ-DAEMON-5",
2026-06-22T02:37:07.3389678Z       "title": "Pump liveness: the peer pump writes a last-tick heartbeat consumed by daemon status / subnet status (decision 23 render legs in REQ-CLI-2/REQ-SUBNET-8); the daemon supervises the pump task — a panic is caught, logged loudly, and the pump restarts with capped backoff (≤5 min), so a 5.9-class death self-heals visibly instead of silently halving the daemon (M8 decision 23; field motivation: hfenduleam 2026-06-07 half-death)",
2026-06-22T02:37:07.3389920Z       "requiredStages": [
2026-06-22T02:37:07.3390024Z         "impl",
2026-06-22T02:37:07.3390129Z         "unit"
2026-06-22T02:37:07.3390230Z       ],
2026-06-22T02:37:07.3390333Z       "stages": {
2026-06-22T02:37:07.3390439Z         "doc": {
2026-06-22T02:37:07.3390548Z           "complete": false,
2026-06-22T02:37:07.3390657Z           "evidence": []
2026-06-22T02:37:07.3390763Z         },
2026-06-22T02:37:07.3390873Z         "impl": {
2026-06-22T02:37:07.3391078Z           "complete": true,
2026-06-22T02:37:07.3391192Z           "evidence": [
2026-06-22T02:37:07.3391296Z             {
2026-06-22T02:37:07.3391460Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3391565Z               "line": 476
2026-06-22T02:37:07.3391664Z             },
2026-06-22T02:37:07.3391775Z             {
2026-06-22T02:37:07.3391912Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3392023Z               "line": 769
2026-06-22T02:37:07.3392128Z             },
2026-06-22T02:37:07.3392236Z             {
2026-06-22T02:37:07.3392381Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3392484Z               "line": 782
2026-06-22T02:37:07.3392588Z             },
2026-06-22T02:37:07.3392679Z             {
2026-06-22T02:37:07.3392825Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3392933Z               "line": 800
2026-06-22T02:37:07.3393039Z             },
2026-06-22T02:37:07.3393149Z             {
2026-06-22T02:37:07.3393277Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3393387Z               "line": 841
2026-06-22T02:37:07.3393487Z             }
2026-06-22T02:37:07.3393591Z           ]
2026-06-22T02:37:07.3393693Z         },
2026-06-22T02:37:07.3393802Z         "int": {
2026-06-22T02:37:07.3393931Z           "complete": false,
2026-06-22T02:37:07.3394040Z           "evidence": []
2026-06-22T02:37:07.3394145Z         },
2026-06-22T02:37:07.3394250Z         "unit": {
2026-06-22T02:37:07.3394369Z           "complete": true,
2026-06-22T02:37:07.3394478Z           "evidence": [
2026-06-22T02:37:07.3394580Z             {
2026-06-22T02:37:07.3394722Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3394827Z               "line": 1189
2026-06-22T02:37:07.3394933Z             },
2026-06-22T02:37:07.3395037Z             {
2026-06-22T02:37:07.3395183Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3395307Z               "line": 1213
2026-06-22T02:37:07.3395405Z             },
2026-06-22T02:37:07.3395505Z             {
2026-06-22T02:37:07.3395640Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.3395749Z               "line": 1239
2026-06-22T02:37:07.3395854Z             }
2026-06-22T02:37:07.3395959Z           ]
2026-06-22T02:37:07.3396063Z         }
2026-06-22T02:37:07.3396163Z       }
2026-06-22T02:37:07.3396268Z     },
2026-06-22T02:37:07.3396369Z     {
2026-06-22T02:37:07.3396488Z       "id": "REQ-DAEMON-6",
2026-06-22T02:37:07.3398471Z       "title": "Service-aware `daemon start`/`stop`: when an OS service manager has a registered spt-daemon for this user, `spt daemon start` and `spt daemon stop` drive THAT service (so stop doesn't IPC-kill a unit that auto-restart-fights for the broker socket — the kitsubito 2026-06-08 loop). `start` graduates from a `run` alias to a first-class background verb (ensure-up, idempotent, non-blocking); stop routes managed→manager, manual→IPC. Linux=systemd user unit (`systemctl --user start|stop|is-active spt-daemon`, detected by unit-file presence); Windows=no controllable manager (the logon task is boot-only), so start=detached spawn / stop=IPC.",
2026-06-22T02:37:07.3398604Z       "requiredStages": [
2026-06-22T02:37:07.3398708Z         "impl",
2026-06-22T02:37:07.3398885Z         "unit"
2026-06-22T02:37:07.3399066Z       ],
2026-06-22T02:37:07.3399172Z       "stages": {
2026-06-22T02:37:07.3399271Z         "doc": {
2026-06-22T02:37:07.3399386Z           "complete": false,
2026-06-22T02:37:07.3399496Z           "evidence": []
2026-06-22T02:37:07.3399605Z         },
2026-06-22T02:37:07.3399706Z         "impl": {
2026-06-22T02:37:07.3399820Z           "complete": true,
2026-06-22T02:37:07.3399920Z           "evidence": [
2026-06-22T02:37:07.3400011Z             {
2026-06-22T02:37:07.3400163Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3400267Z               "line": 495
2026-06-22T02:37:07.3400480Z             },
2026-06-22T02:37:07.3400574Z             {
2026-06-22T02:37:07.3400722Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3400837Z               "line": 526
2026-06-22T02:37:07.3400941Z             },
2026-06-22T02:37:07.3401037Z             {
2026-06-22T02:37:07.3401176Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3401299Z               "line": 55
2026-06-22T02:37:07.3401400Z             },
2026-06-22T02:37:07.3401504Z             {
2026-06-22T02:37:07.3401648Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3401748Z               "line": 70
2026-06-22T02:37:07.3401852Z             },
2026-06-22T02:37:07.3401953Z             {
2026-06-22T02:37:07.3402072Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3402176Z               "line": 2020
2026-06-22T02:37:07.3402273Z             },
2026-06-22T02:37:07.3402377Z             {
2026-06-22T02:37:07.3402496Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3402621Z               "line": 2046
2026-06-22T02:37:07.3402720Z             }
2026-06-22T02:37:07.3402830Z           ]
2026-06-22T02:37:07.3402931Z         },
2026-06-22T02:37:07.3403035Z         "int": {
2026-06-22T02:37:07.3403158Z           "complete": false,
2026-06-22T02:37:07.3403262Z           "evidence": []
2026-06-22T02:37:07.3403376Z         },
2026-06-22T02:37:07.3403484Z         "unit": {
2026-06-22T02:37:07.3403604Z           "complete": true,
2026-06-22T02:37:07.3403700Z           "evidence": [
2026-06-22T02:37:07.3403799Z             {
2026-06-22T02:37:07.3403948Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3404043Z               "line": 288
2026-06-22T02:37:07.3404152Z             },
2026-06-22T02:37:07.3404258Z             {
2026-06-22T02:37:07.3404404Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3404510Z               "line": 299
2026-06-22T02:37:07.3404619Z             },
2026-06-22T02:37:07.3404733Z             {
2026-06-22T02:37:07.3404873Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3404977Z               "line": 325
2026-06-22T02:37:07.3405082Z             },
2026-06-22T02:37:07.3405183Z             {
2026-06-22T02:37:07.3405310Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3405430Z               "line": 351
2026-06-22T02:37:07.3405527Z             }
2026-06-22T02:37:07.3405625Z           ]
2026-06-22T02:37:07.3405729Z         }
2026-06-22T02:37:07.3405834Z       }
2026-06-22T02:37:07.3405937Z     },
2026-06-22T02:37:07.3406037Z     {
2026-06-22T02:37:07.3406137Z       "id": "REQ-DAEMON-7",
2026-06-22T02:37:07.3407587Z       "title": "`daemon run` is foreground-consistent on every platform: the invoking process IS the daemon, blocks until signalled, never auto-detaches or respawns into an invisible background task. The detached/de-elevated background behavior lives ONLY in `start`. Windows: an ELEVATED `daemon run` refuses with guidance (use `start`, or an unelevated shell) instead of respawning detached/de-elevated and vanishing (KH 5.7 preserved — it still never serves elevated).",
2026-06-22T02:37:07.3407707Z       "requiredStages": [
2026-06-22T02:37:07.3407815Z         "impl",
2026-06-22T02:37:07.3407920Z         "unit"
2026-06-22T02:37:07.3408144Z       ],
2026-06-22T02:37:07.3408249Z       "stages": {
2026-06-22T02:37:07.3408355Z         "doc": {
2026-06-22T02:37:07.3408478Z           "complete": false,
2026-06-22T02:37:07.3408582Z           "evidence": []
2026-06-22T02:37:07.3408687Z         },
2026-06-22T02:37:07.3408793Z         "impl": {
2026-06-22T02:37:07.3408902Z           "complete": true,
2026-06-22T02:37:07.3409098Z           "evidence": [
2026-06-22T02:37:07.3409197Z             {
2026-06-22T02:37:07.3409351Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3409455Z               "line": 545
2026-06-22T02:37:07.3409564Z             },
2026-06-22T02:37:07.3409670Z             {
2026-06-22T02:37:07.3409917Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3410023Z               "line": 610
2026-06-22T02:37:07.3410117Z             },
2026-06-22T02:37:07.3410217Z             {
2026-06-22T02:37:07.3410356Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3410470Z               "line": 89
2026-06-22T02:37:07.3410576Z             },
2026-06-22T02:37:07.3410681Z             {
2026-06-22T02:37:07.3410808Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3410922Z               "line": 1957
2026-06-22T02:37:07.3411026Z             }
2026-06-22T02:37:07.3411125Z           ]
2026-06-22T02:37:07.3411225Z         },
2026-06-22T02:37:07.3411336Z         "int": {
2026-06-22T02:37:07.3411444Z           "complete": false,
2026-06-22T02:37:07.3411554Z           "evidence": []
2026-06-22T02:37:07.3411655Z         },
2026-06-22T02:37:07.3411759Z         "unit": {
2026-06-22T02:37:07.3411864Z           "complete": true,
2026-06-22T02:37:07.3411989Z           "evidence": [
2026-06-22T02:37:07.3412088Z             {
2026-06-22T02:37:07.3412232Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3412351Z               "line": 314
2026-06-22T02:37:07.3412450Z             },
2026-06-22T02:37:07.3412561Z             {
2026-06-22T02:37:07.3412694Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3412804Z               "line": 8102
2026-06-22T02:37:07.3412909Z             }
2026-06-22T02:37:07.3413003Z           ]
2026-06-22T02:37:07.3413104Z         }
2026-06-22T02:37:07.3413200Z       }
2026-06-22T02:37:07.3413304Z     },
2026-06-22T02:37:07.3413399Z     {
2026-06-22T02:37:07.3413515Z       "id": "REQ-DAEMON-8",
2026-06-22T02:37:07.3414499Z       "title": "Internal auto-start prefers the service: `ensure_running` (any spt command's implicit daemon start, REQ-DAEMON-3) routes through the service-aware start path — when a manager has a registered service it starts THAT, never a competing manual `spawn_detached` daemon that would fight the service for the socket.",
2026-06-22T02:37:07.3414612Z       "requiredStages": [
2026-06-22T02:37:07.3414721Z         "impl",
2026-06-22T02:37:07.3414828Z         "unit"
2026-06-22T02:37:07.3414927Z       ],
2026-06-22T02:37:07.3415036Z       "stages": {
2026-06-22T02:37:07.3415137Z         "doc": {
2026-06-22T02:37:07.3415261Z           "complete": false,
2026-06-22T02:37:07.3415375Z           "evidence": []
2026-06-22T02:37:07.3415481Z         },
2026-06-22T02:37:07.3415585Z         "impl": {
2026-06-22T02:37:07.3415695Z           "complete": true,
2026-06-22T02:37:07.3415810Z           "evidence": [
2026-06-22T02:37:07.3415914Z             {
2026-06-22T02:37:07.3416063Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3416176Z               "line": 445
2026-06-22T02:37:07.3416285Z             },
2026-06-22T02:37:07.3416385Z             {
2026-06-22T02:37:07.3416540Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3416644Z               "line": 56
2026-06-22T02:37:07.3416745Z             }
2026-06-22T02:37:07.3416854Z           ]
2026-06-22T02:37:07.3416954Z         },
2026-06-22T02:37:07.3417060Z         "int": {
2026-06-22T02:37:07.3417169Z           "complete": false,
2026-06-22T02:37:07.3417278Z           "evidence": []
2026-06-22T02:37:07.3417489Z         },
2026-06-22T02:37:07.3417598Z         "unit": {
2026-06-22T02:37:07.3420982Z           "complete": true,
2026-06-22T02:37:07.3421121Z           "evidence": [
2026-06-22T02:37:07.3421222Z             {
2026-06-22T02:37:07.3421387Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3421511Z               "line": 288
2026-06-22T02:37:07.3421619Z             },
2026-06-22T02:37:07.3421718Z             {
2026-06-22T02:37:07.3421857Z               "path": "crates/spt-daemon/src/service.rs",
2026-06-22T02:37:07.3421967Z               "line": 325
2026-06-22T02:37:07.3422071Z             }
2026-06-22T02:37:07.3422167Z           ]
2026-06-22T02:37:07.3422419Z         }
2026-06-22T02:37:07.3422520Z       }
2026-06-22T02:37:07.3422615Z     },
2026-06-22T02:37:07.3422720Z     {
2026-06-22T02:37:07.3422835Z       "id": "REQ-DAEMON-9",
2026-06-22T02:37:07.3425186Z       "title": "Net-bind boot-race resilience: a daemon that comes up net-less (NetHost::start failed — e.g. the systemd unit autostarted before the network/DNS stack was ready, `Failed to create an address lookup service`) must SELF-HEAL — retry the net bring-up in the background with capped backoff and, on success, attach net to the broker + spawn the dispatcher/peer-pump (which today are gated on `net_up` at boot and so never start, leaving the node silently unreachable until a manual restart — kitsubito 2026-06-08). Status surfaces the net-less state honestly (a net-less broker renders as 'no connection', not only a pump-STALLED line with a bogus pre-boot heartbeat age). The installer's autostart unit waits for the network (`Wants=/After=network-online.target`) as belt-and-suspenders.",
2026-06-22T02:37:07.3425326Z       "requiredStages": [
2026-06-22T02:37:07.3425435Z         "impl",
2026-06-22T02:37:07.3425530Z         "unit"
2026-06-22T02:37:07.3425635Z       ],
2026-06-22T02:37:07.3425731Z       "stages": {
2026-06-22T02:37:07.3425835Z         "doc": {
2026-06-22T02:37:07.3425945Z           "complete": false,
2026-06-22T02:37:07.3426064Z           "evidence": []
2026-06-22T02:37:07.3426173Z         },
2026-06-22T02:37:07.3426270Z         "impl": {
2026-06-22T02:37:07.3426389Z           "complete": true,
2026-06-22T02:37:07.3426493Z           "evidence": [
2026-06-22T02:37:07.3426590Z             {
2026-06-22T02:37:07.3426736Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3426854Z               "line": 276
2026-06-22T02:37:07.3426954Z             },
2026-06-22T02:37:07.3427058Z             {
2026-06-22T02:37:07.3427209Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3427320Z               "line": 1202
2026-06-22T02:37:07.3427433Z             },
2026-06-22T02:37:07.3427529Z             {
2026-06-22T02:37:07.3427667Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3427776Z               "line": 197
2026-06-22T02:37:07.3427878Z             },
2026-06-22T02:37:07.3427982Z             {
2026-06-22T02:37:07.3428120Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3428231Z               "line": 344
2026-06-22T02:37:07.3428335Z             },
2026-06-22T02:37:07.3428440Z             {
2026-06-22T02:37:07.3428575Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3428679Z               "line": 381
2026-06-22T02:37:07.3428788Z             },
2026-06-22T02:37:07.3428884Z             {
2026-06-22T02:37:07.3429108Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3429214Z               "line": 2075
2026-06-22T02:37:07.3429321Z             }
2026-06-22T02:37:07.3429418Z           ]
2026-06-22T02:37:07.3429509Z         },
2026-06-22T02:37:07.3429622Z         "int": {
2026-06-22T02:37:07.3429735Z           "complete": false,
2026-06-22T02:37:07.3429841Z           "evidence": []
2026-06-22T02:37:07.3429941Z         },
2026-06-22T02:37:07.3430046Z         "unit": {
2026-06-22T02:37:07.3430151Z           "complete": true,
2026-06-22T02:37:07.3430261Z           "evidence": [
2026-06-22T02:37:07.3430471Z             {
2026-06-22T02:37:07.3430613Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3430728Z               "line": 1158
2026-06-22T02:37:07.3430824Z             },
2026-06-22T02:37:07.3430923Z             {
2026-06-22T02:37:07.3431057Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3431162Z               "line": 10580
2026-06-22T02:37:07.3431266Z             }
2026-06-22T02:37:07.3431367Z           ]
2026-06-22T02:37:07.3431472Z         }
2026-06-22T02:37:07.3431571Z       }
2026-06-22T02:37:07.3431672Z     },
2026-06-22T02:37:07.3431778Z     {
2026-06-22T02:37:07.3431881Z       "id": "REQ-DOCS-1",
2026-06-22T02:37:07.3432202Z       "title": "Dual-audience docs (human + AI dev-agent), markdown once / two depths",
2026-06-22T02:37:07.3432316Z       "requiredStages": [
2026-06-22T02:37:07.3432422Z         "doc",
2026-06-22T02:37:07.3432512Z         "impl"
2026-06-22T02:37:07.3432616Z       ],
2026-06-22T02:37:07.3432737Z       "stages": {
2026-06-22T02:37:07.3432841Z         "doc": {
2026-06-22T02:37:07.3432955Z           "complete": true,
2026-06-22T02:37:07.3433061Z           "evidence": [
2026-06-22T02:37:07.3433165Z             {
2026-06-22T02:37:07.3433295Z               "path": "docs-site/src/index.md",
2026-06-22T02:37:07.3433404Z               "line": 50
2026-06-22T02:37:07.3433509Z             }
2026-06-22T02:37:07.3433604Z           ]
2026-06-22T02:37:07.3433700Z         },
2026-06-22T02:37:07.3433805Z         "impl": {
2026-06-22T02:37:07.3433914Z           "complete": true,
2026-06-22T02:37:07.3434020Z           "evidence": [
2026-06-22T02:37:07.3434124Z             {
2026-06-22T02:37:07.3434283Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T02:37:07.3434386Z               "line": 12
2026-06-22T02:37:07.3434491Z             },
2026-06-22T02:37:07.3434592Z             {
2026-06-22T02:37:07.3434725Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.3434828Z               "line": 14
2026-06-22T02:37:07.3434934Z             }
2026-06-22T02:37:07.3435032Z           ]
2026-06-22T02:37:07.3435122Z         },
2026-06-22T02:37:07.3435227Z         "int": {
2026-06-22T02:37:07.3435337Z           "complete": false,
2026-06-22T02:37:07.3435451Z           "evidence": []
2026-06-22T02:37:07.3435551Z         },
2026-06-22T02:37:07.3435652Z         "unit": {
2026-06-22T02:37:07.3435766Z           "complete": false,
2026-06-22T02:37:07.3435871Z           "evidence": []
2026-06-22T02:37:07.3435976Z         }
2026-06-22T02:37:07.3436066Z       }
2026-06-22T02:37:07.3436166Z     },
2026-06-22T02:37:07.3436267Z     {
2026-06-22T02:37:07.3436381Z       "id": "REQ-DOCS-2",
2026-06-22T02:37:07.3436572Z       "title": "Sub-10-minute runnable killer quickstart per audience",
2026-06-22T02:37:07.3436685Z       "requiredStages": [
2026-06-22T02:37:07.3436791Z         "doc",
2026-06-22T02:37:07.3436882Z         "int"
2026-06-22T02:37:07.3436972Z       ],
2026-06-22T02:37:07.3437072Z       "stages": {
2026-06-22T02:37:07.3437188Z         "doc": {
2026-06-22T02:37:07.3437296Z           "complete": true,
2026-06-22T02:37:07.3437405Z           "evidence": [
2026-06-22T02:37:07.3437514Z             {
2026-06-22T02:37:07.3437707Z               "path": "docs-site/src/harness-contract/integration-checklist.md",
2026-06-22T02:37:07.3437818Z               "line": 3
2026-06-22T02:37:07.3437919Z             },
2026-06-22T02:37:07.3438017Z             {
2026-06-22T02:37:07.3438171Z               "path": "docs-site/src/quickstart/adapter.md",
2026-06-22T02:37:07.3438281Z               "line": 3
2026-06-22T02:37:07.3438380Z             },
2026-06-22T02:37:07.3438471Z             {
2026-06-22T02:37:07.3438633Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T02:37:07.3438738Z               "line": 3
2026-06-22T02:37:07.3438843Z             }
2026-06-22T02:37:07.3439029Z           ]
2026-06-22T02:37:07.3439130Z         },
2026-06-22T02:37:07.3439239Z         "impl": {
2026-06-22T02:37:07.3439348Z           "complete": false,
2026-06-22T02:37:07.3439567Z           "evidence": []
2026-06-22T02:37:07.3439668Z         },
2026-06-22T02:37:07.3439774Z         "int": {
2026-06-22T02:37:07.3439891Z           "complete": true,
2026-06-22T02:37:07.3439992Z           "evidence": [
2026-06-22T02:37:07.3440098Z             {
2026-06-22T02:37:07.3440248Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:37:07.3440363Z               "line": 14
2026-06-22T02:37:07.3440464Z             }
2026-06-22T02:37:07.3440567Z           ]
2026-06-22T02:37:07.3440673Z         },
2026-06-22T02:37:07.3440773Z         "unit": {
2026-06-22T02:37:07.3440887Z           "complete": false,
2026-06-22T02:37:07.3441107Z           "evidence": []
2026-06-22T02:37:07.3441206Z         }
2026-06-22T02:37:07.3441302Z       }
2026-06-22T02:37:07.3441407Z     },
2026-06-22T02:37:07.3441512Z     {
2026-06-22T02:37:07.3441622Z       "id": "REQ-DOCS-3",
2026-06-22T02:37:07.3441874Z       "title": "Diátaxis structure; one canonical way to do X",
2026-06-22T02:37:07.3441995Z       "requiredStages": [
2026-06-22T02:37:07.3442098Z         "doc"
2026-06-22T02:37:07.3442193Z       ],
2026-06-22T02:37:07.3442300Z       "stages": {
2026-06-22T02:37:07.3442408Z         "doc": {
2026-06-22T02:37:07.3442512Z           "complete": true,
2026-06-22T02:37:07.3442622Z           "evidence": [
2026-06-22T02:37:07.3442716Z             {
2026-06-22T02:37:07.3442852Z               "path": "docs-site/src/index.md",
2026-06-22T02:37:07.3442963Z               "line": 42
2026-06-22T02:37:07.3443063Z             }
2026-06-22T02:37:07.3443172Z           ]
2026-06-22T02:37:07.3443278Z         },
2026-06-22T02:37:07.3443383Z         "impl": {
2026-06-22T02:37:07.3443496Z           "complete": false,
2026-06-22T02:37:07.3443607Z           "evidence": []
2026-06-22T02:37:07.3443702Z         },
2026-06-22T02:37:07.3443807Z         "int": {
2026-06-22T02:37:07.3443922Z           "complete": false,
2026-06-22T02:37:07.3444031Z           "evidence": []
2026-06-22T02:37:07.3444131Z         },
2026-06-22T02:37:07.3444232Z         "unit": {
2026-06-22T02:37:07.3444341Z           "complete": false,
2026-06-22T02:37:07.3444446Z           "evidence": []
2026-06-22T02:37:07.3444552Z         }
2026-06-22T02:37:07.3444655Z       }
2026-06-22T02:37:07.3444751Z     },
2026-06-22T02:37:07.3444857Z     {
2026-06-22T02:37:07.3444956Z       "id": "REQ-DOCS-4",
2026-06-22T02:37:07.3445182Z       "title": "Agent-consumable layer (llms.txt, manifest schema, MCP, CLI help)",
2026-06-22T02:37:07.3445289Z       "requiredStages": [
2026-06-22T02:37:07.3445398Z         "doc",
2026-06-22T02:37:07.3445503Z         "impl",
2026-06-22T02:37:07.3445606Z         "unit"
2026-06-22T02:37:07.3445710Z       ],
2026-06-22T02:37:07.3445816Z       "stages": {
2026-06-22T02:37:07.3445921Z         "doc": {
2026-06-22T02:37:07.3446030Z           "complete": true,
2026-06-22T02:37:07.3446141Z           "evidence": [
2026-06-22T02:37:07.3446245Z             {
2026-06-22T02:37:07.3446382Z               "path": "docs/DOCS-STRATEGY.md",
2026-06-22T02:37:07.3446493Z               "line": 35
2026-06-22T02:37:07.3446593Z             }
2026-06-22T02:37:07.3446692Z           ]
2026-06-22T02:37:07.3446794Z         },
2026-06-22T02:37:07.3446893Z         "impl": {
2026-06-22T02:37:07.3447003Z           "complete": true,
2026-06-22T02:37:07.3447109Z           "evidence": [
2026-06-22T02:37:07.3447213Z             {
2026-06-22T02:37:07.3447366Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.3447476Z               "line": 746
2026-06-22T02:37:07.3447575Z             },
2026-06-22T02:37:07.3447681Z             {
2026-06-22T02:37:07.3447814Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.3447922Z               "line": 15
2026-06-22T02:37:07.3448027Z             }
2026-06-22T02:37:07.3448117Z           ]
2026-06-22T02:37:07.3448216Z         },
2026-06-22T02:37:07.3448315Z         "int": {
2026-06-22T02:37:07.3448421Z           "complete": false,
2026-06-22T02:37:07.3448606Z           "evidence": []
2026-06-22T02:37:07.3448707Z         },
2026-06-22T02:37:07.3448812Z         "unit": {
2026-06-22T02:37:07.3448916Z           "complete": true,
2026-06-22T02:37:07.3449098Z           "evidence": [
2026-06-22T02:37:07.3449193Z             {
2026-06-22T02:37:07.3449346Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.3449450Z               "line": 1682
2026-06-22T02:37:07.3449550Z             }
2026-06-22T02:37:07.3449652Z           ]
2026-06-22T02:37:07.3449751Z         }
2026-06-22T02:37:07.3449846Z       }
2026-06-22T02:37:07.3449947Z     },
2026-06-22T02:37:07.3450038Z     {
2026-06-22T02:37:07.3450142Z       "id": "REQ-DOCS-5",
2026-06-22T02:37:07.3450476Z       "title": "Anti-drift: rustdoc/schema/exports/CLI-help generated + CI-checked",
2026-06-22T02:37:07.3450591Z       "requiredStages": [
2026-06-22T02:37:07.3450686Z         "impl",
2026-06-22T02:37:07.3450789Z         "int"
2026-06-22T02:37:07.3450889Z       ],
2026-06-22T02:37:07.3450986Z       "stages": {
2026-06-22T02:37:07.3451099Z         "doc": {
2026-06-22T02:37:07.3451208Z           "complete": false,
2026-06-22T02:37:07.3451324Z           "evidence": []
2026-06-22T02:37:07.3451414Z         },
2026-06-22T02:37:07.3451519Z         "impl": {
2026-06-22T02:37:07.3451625Z           "complete": true,
2026-06-22T02:37:07.3451729Z           "evidence": [
2026-06-22T02:37:07.3451833Z             {
2026-06-22T02:37:07.3451972Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.3452081Z               "line": 747
2026-06-22T02:37:07.3452187Z             },
2026-06-22T02:37:07.3452287Z             {
2026-06-22T02:37:07.3452420Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.3452535Z               "line": 113
2026-06-22T02:37:07.3452635Z             }
2026-06-22T02:37:07.3452734Z           ]
2026-06-22T02:37:07.3452841Z         },
2026-06-22T02:37:07.3452940Z         "int": {
2026-06-22T02:37:07.3453049Z           "complete": true,
2026-06-22T02:37:07.3453158Z           "evidence": [
2026-06-22T02:37:07.3453248Z             {
2026-06-22T02:37:07.3453380Z               "path": ".github/workflows/ci.yml",
2026-06-22T02:37:07.3453480Z               "line": 175
2026-06-22T02:37:07.3453576Z             },
2026-06-22T02:37:07.3453675Z             {
2026-06-22T02:37:07.3453823Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.3453924Z               "line": 1719
2026-06-22T02:37:07.3454028Z             }
2026-06-22T02:37:07.3454134Z           ]
2026-06-22T02:37:07.3454234Z         },
2026-06-22T02:37:07.3454328Z         "unit": {
2026-06-22T02:37:07.3454434Z           "complete": false,
2026-06-22T02:37:07.3454543Z           "evidence": []
2026-06-22T02:37:07.3454643Z         }
2026-06-22T02:37:07.3454744Z       }
2026-06-22T02:37:07.3454839Z     },
2026-06-22T02:37:07.3454934Z     {
2026-06-22T02:37:07.3455039Z       "id": "REQ-DOCS-6",
2026-06-22T02:37:07.3455388Z       "title": "spt how-to <topic>: in-binary task-oriented agent instructions (anti-drift; quickstart prompts point agents at it)",
2026-06-22T02:37:07.3455511Z       "requiredStages": [
2026-06-22T02:37:07.3455611Z         "impl",
2026-06-22T02:37:07.3455717Z         "unit",
2026-06-22T02:37:07.3455821Z         "int"
2026-06-22T02:37:07.3455921Z       ],
2026-06-22T02:37:07.3456016Z       "stages": {
2026-06-22T02:37:07.3456106Z         "doc": {
2026-06-22T02:37:07.3456223Z           "complete": true,
2026-06-22T02:37:07.3456333Z           "evidence": [
2026-06-22T02:37:07.3456438Z             {
2026-06-22T02:37:07.3456595Z               "path": "docs-site/src/quickstart/messaging.md",
2026-06-22T02:37:07.3456696Z               "line": 4
2026-06-22T02:37:07.3456801Z             }
2026-06-22T02:37:07.3456895Z           ]
2026-06-22T02:37:07.3456996Z         },
2026-06-22T02:37:07.3457096Z         "impl": {
2026-06-22T02:37:07.3457200Z           "complete": true,
2026-06-22T02:37:07.3457315Z           "evidence": [
2026-06-22T02:37:07.3457415Z             {
2026-06-22T02:37:07.3457650Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3457749Z               "line": 5240
2026-06-22T02:37:07.3457854Z             }
2026-06-22T02:37:07.3457950Z           ]
2026-06-22T02:37:07.3458055Z         },
2026-06-22T02:37:07.3458164Z         "int": {
2026-06-22T02:37:07.3458279Z           "complete": true,
2026-06-22T02:37:07.3458384Z           "evidence": [
2026-06-22T02:37:07.3458487Z             {
2026-06-22T02:37:07.3458635Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:37:07.3458738Z               "line": 39
2026-06-22T02:37:07.3458842Z             }
2026-06-22T02:37:07.3459020Z           ]
2026-06-22T02:37:07.3459210Z         },
2026-06-22T02:37:07.3459315Z         "unit": {
2026-06-22T02:37:07.3459429Z           "complete": true,
2026-06-22T02:37:07.3459534Z           "evidence": [
2026-06-22T02:37:07.3459634Z             {
2026-06-22T02:37:07.3459758Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3459868Z               "line": 10742
2026-06-22T02:37:07.3459982Z             }
2026-06-22T02:37:07.3460082Z           ]
2026-06-22T02:37:07.3460182Z         }
2026-06-22T02:37:07.3460278Z       }
2026-06-22T02:37:07.3460378Z     },
2026-06-22T02:37:07.3460483Z     {
2026-06-22T02:37:07.3460593Z       "id": "REQ-ELEVATE-1",
2026-06-22T02:37:07.3463737Z       "title": "Cross-platform self-elevating re-launch for privilege-gated commands: a pure decision seam `decide_elevation_path(os, elevation, interactive_tty, has_display, has_pkexec, has_term_emulator) -> ElevatePath{AlreadyElevated, InlineSudo, UacWindow, Pkexec, TerminalEmulator, PrintHint}` selecting how to re-acquire privilege, and the per-OS impure launchers it dispatches — Windows UAC console (ShellExecuteW `runas` on the abs-exe + verbatim argv; the elevated child does the work, prints 'You can close this window', and pauses for a keypress; the original prints 'Elevated terminal launched…' and exits 0; NEVER pipes the child's stdout back across the privilege boundary), Linux desktop pkexec (preferred, native polkit GUI auth) else x-terminal-emulator -e sudo (fallback list x-terminal-emulator→gnome-terminal→konsole→xterm), the existing interactive-TTY inline sudo, and the headless/no-path floor that prints the absolute-path command. Reused by every gated command (not subnet-specific). Generalizes should_auto_elevate.",
2026-06-22T02:37:07.3463883Z       "requiredStages": [
2026-06-22T02:37:07.3463992Z         "doc",
2026-06-22T02:37:07.3464098Z         "impl",
2026-06-22T02:37:07.3464198Z         "unit"
2026-06-22T02:37:07.3464297Z       ],
2026-06-22T02:37:07.3464403Z       "stages": {
2026-06-22T02:37:07.3464517Z         "doc": {
2026-06-22T02:37:07.3464631Z           "complete": true,
2026-06-22T02:37:07.3464747Z           "evidence": [
2026-06-22T02:37:07.3464842Z             {
2026-06-22T02:37:07.3464960Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.3465066Z               "line": 687
2026-06-22T02:37:07.3465175Z             }
2026-06-22T02:37:07.3465280Z           ]
2026-06-22T02:37:07.3465386Z         },
2026-06-22T02:37:07.3465490Z         "impl": {
2026-06-22T02:37:07.3465604Z           "complete": true,
2026-06-22T02:37:07.3465715Z           "evidence": [
2026-06-22T02:37:07.3465814Z             {
2026-06-22T02:37:07.3465944Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3466058Z               "line": 3572
2026-06-22T02:37:07.3466157Z             },
2026-06-22T02:37:07.3466263Z             {
2026-06-22T02:37:07.3466387Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3466495Z               "line": 3617
2026-06-22T02:37:07.3466595Z             },
2026-06-22T02:37:07.3466699Z             {
2026-06-22T02:37:07.3466836Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3466946Z               "line": 3679
2026-06-22T02:37:07.3467056Z             },
2026-06-22T02:37:07.3467155Z             {
2026-06-22T02:37:07.3467294Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.3467403Z               "line": 92
2026-06-22T02:37:07.3467609Z             },
2026-06-22T02:37:07.3467718Z             {
2026-06-22T02:37:07.3467856Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.3467966Z               "line": 148
2026-06-22T02:37:07.3468066Z             }
2026-06-22T02:37:07.3468171Z           ]
2026-06-22T02:37:07.3468272Z         },
2026-06-22T02:37:07.3468380Z         "int": {
2026-06-22T02:37:07.3468501Z           "complete": false,
2026-06-22T02:37:07.3468605Z           "evidence": []
2026-06-22T02:37:07.3468709Z         },
2026-06-22T02:37:07.3468811Z         "unit": {
2026-06-22T02:37:07.3468925Z           "complete": true,
2026-06-22T02:37:07.3469228Z           "evidence": [
2026-06-22T02:37:07.3469336Z             {
2026-06-22T02:37:07.3469479Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.3469589Z               "line": 442
2026-06-22T02:37:07.3469693Z             },
2026-06-22T02:37:07.3469793Z             {
2026-06-22T02:37:07.3469923Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.3470027Z               "line": 460
2026-06-22T02:37:07.3470133Z             }
2026-06-22T02:37:07.3470233Z           ]
2026-06-22T02:37:07.3470332Z         }
2026-06-22T02:37:07.3470428Z       }
2026-06-22T02:37:07.3470523Z     },
2026-06-22T02:37:07.3470623Z     {
2026-06-22T02:37:07.3470757Z       "id": "REQ-ENDPOINT-LIST-MERGE-LOCAL",
2026-06-22T02:37:07.3472534Z       "title": "`spt endpoint list` always merges this node's LOCAL (unadvertised) perches into the view; the `--local` flag is REMOVED (operator decision 2026-06-17). Rationale: `spt whoami` is a thin alias of `endpoint list` — a just-online agent running `whoami` must see its OWN perch, or it gets an omitted-self view ('chaos'). FIX: drop the `--local` flag + its `--detail` conflict test + the v0.10.0 REQ-PICKER-5 hint line (cli.rs:1678) + cmd_list_local; the bare list merges local perches into the subnet view; fix the whoami alias path accordingly. Run `cargo run -p xtask -- gen` (docs-drift, DEFAULT target). (v0.12.1)",
2026-06-22T02:37:07.3472673Z       "requiredStages": [
2026-06-22T02:37:07.3472773Z         "doc",
2026-06-22T02:37:07.3472873Z         "impl",
2026-06-22T02:37:07.3472982Z         "unit"
2026-06-22T02:37:07.3473083Z       ],
2026-06-22T02:37:07.3473183Z       "stages": {
2026-06-22T02:37:07.3473288Z         "doc": {
2026-06-22T02:37:07.3473403Z           "complete": true,
2026-06-22T02:37:07.3473507Z           "evidence": [
2026-06-22T02:37:07.3473617Z             {
2026-06-22T02:37:07.3473741Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.3473850Z               "line": 711
2026-06-22T02:37:07.3473956Z             }
2026-06-22T02:37:07.3474056Z           ]
2026-06-22T02:37:07.3474164Z         },
2026-06-22T02:37:07.3474264Z         "impl": {
2026-06-22T02:37:07.3474383Z           "complete": true,
2026-06-22T02:37:07.3474490Z           "evidence": [
2026-06-22T02:37:07.3474591Z             {
2026-06-22T02:37:07.3474711Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3474814Z               "line": 1721
2026-06-22T02:37:07.3474915Z             },
2026-06-22T02:37:07.3475016Z             {
2026-06-22T02:37:07.3475148Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3475254Z               "line": 3125
2026-06-22T02:37:07.3475354Z             },
2026-06-22T02:37:07.3475453Z             {
2026-06-22T02:37:07.3475578Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3475697Z               "line": 3134
2026-06-22T02:37:07.3475801Z             }
2026-06-22T02:37:07.3475907Z           ]
2026-06-22T02:37:07.3476011Z         },
2026-06-22T02:37:07.3476116Z         "int": {
2026-06-22T02:37:07.3476237Z           "complete": false,
2026-06-22T02:37:07.3476349Z           "evidence": []
2026-06-22T02:37:07.3476450Z         },
2026-06-22T02:37:07.3476557Z         "unit": {
2026-06-22T02:37:07.3476669Z           "complete": true,
2026-06-22T02:37:07.3476785Z           "evidence": [
2026-06-22T02:37:07.3476881Z             {
2026-06-22T02:37:07.3477102Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3477212Z               "line": 7950
2026-06-22T02:37:07.3477320Z             },
2026-06-22T02:37:07.3477419Z             {
2026-06-22T02:37:07.3477549Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3477658Z               "line": 7991
2026-06-22T02:37:07.3477758Z             }
2026-06-22T02:37:07.3477859Z           ]
2026-06-22T02:37:07.3477959Z         }
2026-06-22T02:37:07.3478063Z       }
2026-06-22T02:37:07.3478155Z     },
2026-06-22T02:37:07.3478250Z     {
2026-06-22T02:37:07.3478383Z       "id": "REQ-ENDPOINT-PURGE",
2026-06-22T02:37:07.3483165Z       "title": "`spt endpoint purge <id>` fully removes an endpoint AND every record keyed on it — the formal teardown devs/CI need for clean test setup/reset. NOT consent-gated (a local dev/test op — no peer consent). OFFLINE-ONLY: refuses while the endpoint is online / daemon-hosted (deleting records out from under a live host risks the daemon re-creating or re-hosting mid-purge); `--force` STOPS it first (endpoint stop → wait for the daemon reconcile to un-host + reap the Psyche) THEN purges. Confirms interactively unless `--yes` (the CI path). Refuses purging the CALLER's OWN running id. All LOCAL — purge reaches only THIS node's records; a remote endpoint's records can't be touched, and its subnet-registry rows decay via the epoch-lease eviction (REQ-HAZARD-REGISTRY-DECAY). Removes: (1) the perch dir TREE recursively — owlery/<id>/ incl every nested {id}-psyche / {id}-w* / shells child (info.json, ready marker, sessions.log ledger, spool.db, inbox, .idle/.more-done sentinels, auth token); (2) the registry address (registry::unregister_address); (3) the context store — ContextStore::remove_endpoint(id): the a-<id> branch+worktree + the <id>/ rows from every p-<project> branch (the same fn `fork --delete-source` already uses); (4) node-local trust rows keyed on the id — access.json + visibility.json. Reuse-heavy: it is `fork --delete-source` generalized (recursive perch remove + unregister + remove_endpoint) + the trust-record cleanup; `endpoint rename` already enumerates the same record set + uses the same offline-only gate. (v0.12.0)",
2026-06-22T02:37:07.3483471Z       "requiredStages": [
2026-06-22T02:37:07.3483577Z         "doc",
2026-06-22T02:37:07.3483681Z         "impl",
2026-06-22T02:37:07.3483786Z         "unit",
2026-06-22T02:37:07.3483877Z         "int"
2026-06-22T02:37:07.3483986Z       ],
2026-06-22T02:37:07.3484086Z       "stages": {
2026-06-22T02:37:07.3484192Z         "doc": {
2026-06-22T02:37:07.3484297Z           "complete": true,
2026-06-22T02:37:07.3484410Z           "evidence": [
2026-06-22T02:37:07.3484526Z             {
2026-06-22T02:37:07.3484634Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.3484753Z               "line": 163
2026-06-22T02:37:07.3484858Z             }
2026-06-22T02:37:07.3484957Z           ]
2026-06-22T02:37:07.3485050Z         },
2026-06-22T02:37:07.3485151Z         "impl": {
2026-06-22T02:37:07.3485256Z           "complete": true,
2026-06-22T02:37:07.3485370Z           "evidence": [
2026-06-22T02:37:07.3485475Z             {
2026-06-22T02:37:07.3485628Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:37:07.3485742Z               "line": 105
2026-06-22T02:37:07.3485838Z             },
2026-06-22T02:37:07.3485948Z             {
2026-06-22T02:37:07.3486081Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3486191Z               "line": 7219
2026-06-22T02:37:07.3486295Z             }
2026-06-22T02:37:07.3486396Z           ]
2026-06-22T02:37:07.3486487Z         },
2026-06-22T02:37:07.3486586Z         "int": {
2026-06-22T02:37:07.3486705Z           "complete": true,
2026-06-22T02:37:07.3486816Z           "evidence": [
2026-06-22T02:37:07.3486915Z             {
2026-06-22T02:37:07.3487044Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3487145Z               "line": 7384
2026-06-22T02:37:07.3487248Z             }
2026-06-22T02:37:07.3487350Z           ]
2026-06-22T02:37:07.3487549Z         },
2026-06-22T02:37:07.3487653Z         "unit": {
2026-06-22T02:37:07.3487758Z           "complete": true,
2026-06-22T02:37:07.3487871Z           "evidence": [
2026-06-22T02:37:07.3487970Z             {
2026-06-22T02:37:07.3488090Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3488200Z               "line": 7355
2026-06-22T02:37:07.3488309Z             }
2026-06-22T02:37:07.3488410Z           ]
2026-06-22T02:37:07.3488519Z         }
2026-06-22T02:37:07.3488618Z       }
2026-06-22T02:37:07.3488710Z     },
2026-06-22T02:37:07.3488805Z     {
2026-06-22T02:37:07.3488933Z       "id": "REQ-ENDPOINT-STOP-OFFLINE",
2026-06-22T02:37:07.3490451Z       "title": "H3: `spt endpoint stop <id>` marks the endpoint OFFLINE (alive=false), not merely de-readied. cmd_stop (cli.rs:2994-3010) removes the ready marker + unregisters the address but does NOT set status offline, so a stopped daemon-hosted endpoint still reports alive=true (status=online latch). FIX: add set_status(perch, STATUS_OFFLINE) to cmd_stop — folds with B2 (same setter). Unit: stop → is_perch_alive=false / alive=false. (v0.12.0)",
2026-06-22T02:37:07.3490585Z       "requiredStages": [
2026-06-22T02:37:07.3490690Z         "impl",
2026-06-22T02:37:07.3490794Z         "unit"
2026-06-22T02:37:07.3490885Z       ],
2026-06-22T02:37:07.3490991Z       "stages": {
2026-06-22T02:37:07.3491095Z         "doc": {
2026-06-22T02:37:07.3491204Z           "complete": false,
2026-06-22T02:37:07.3491315Z           "evidence": []
2026-06-22T02:37:07.3491414Z         },
2026-06-22T02:37:07.3491524Z         "impl": {
2026-06-22T02:37:07.3491634Z           "complete": true,
2026-06-22T02:37:07.3491753Z           "evidence": [
2026-06-22T02:37:07.3491858Z             {
2026-06-22T02:37:07.3491987Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3492101Z               "line": 3165
2026-06-22T02:37:07.3492202Z             }
2026-06-22T02:37:07.3492301Z           ]
2026-06-22T02:37:07.3492397Z         },
2026-06-22T02:37:07.3492503Z         "int": {
2026-06-22T02:37:07.3492612Z           "complete": false,
2026-06-22T02:37:07.3492716Z           "evidence": []
2026-06-22T02:37:07.3492822Z         },
2026-06-22T02:37:07.3492927Z         "unit": {
2026-06-22T02:37:07.3493044Z           "complete": true,
2026-06-22T02:37:07.3493149Z           "evidence": [
2026-06-22T02:37:07.3493255Z             {
2026-06-22T02:37:07.3493387Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3493488Z               "line": 7331
2026-06-22T02:37:07.3493593Z             }
2026-06-22T02:37:07.3493688Z           ]
2026-06-22T02:37:07.3493783Z         }
2026-06-22T02:37:07.3493884Z       }
2026-06-22T02:37:07.3493997Z     },
2026-06-22T02:37:07.3494103Z     {
2026-06-22T02:37:07.3494213Z       "id": "REQ-EP-1",
2026-06-22T02:37:07.3494379Z       "title": "Day-one endpoint types; open type system",
2026-06-22T02:37:07.3494485Z       "requiredStages": [
2026-06-22T02:37:07.3494594Z         "impl",
2026-06-22T02:37:07.3494694Z         "unit"
2026-06-22T02:37:07.3494800Z       ],
2026-06-22T02:37:07.3494908Z       "stages": {
2026-06-22T02:37:07.3495009Z         "doc": {
2026-06-22T02:37:07.3495124Z           "complete": false,
2026-06-22T02:37:07.3495228Z           "evidence": []
2026-06-22T02:37:07.3495332Z         },
2026-06-22T02:37:07.3495437Z         "impl": {
2026-06-22T02:37:07.3495554Z           "complete": true,
2026-06-22T02:37:07.3495663Z           "evidence": [
2026-06-22T02:37:07.3495768Z             {
2026-06-22T02:37:07.3495921Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3496030Z               "line": 77
2026-06-22T02:37:07.3496132Z             },
2026-06-22T02:37:07.3496240Z             {
2026-06-22T02:37:07.3496389Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3496503Z               "line": 94
2026-06-22T02:37:07.3496597Z             }
2026-06-22T02:37:07.3496708Z           ]
2026-06-22T02:37:07.3496813Z         },
2026-06-22T02:37:07.3496908Z         "int": {
2026-06-22T02:37:07.3497127Z           "complete": false,
2026-06-22T02:37:07.3497241Z           "evidence": []
2026-06-22T02:37:07.3497348Z         },
2026-06-22T02:37:07.3497452Z         "unit": {
2026-06-22T02:37:07.3497565Z           "complete": true,
2026-06-22T02:37:07.3497672Z           "evidence": [
2026-06-22T02:37:07.3497785Z             {
2026-06-22T02:37:07.3497963Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3498086Z               "line": 161
2026-06-22T02:37:07.3498199Z             },
2026-06-22T02:37:07.3498304Z             {
2026-06-22T02:37:07.3498450Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3498640Z               "line": 178
2026-06-22T02:37:07.3498750Z             }
2026-06-22T02:37:07.3498849Z           ]
2026-06-22T02:37:07.3499017Z         }
2026-06-22T02:37:07.3499122Z       }
2026-06-22T02:37:07.3499222Z     },
2026-06-22T02:37:07.3499327Z     {
2026-06-22T02:37:07.3499436Z       "id": "REQ-EP-2",
2026-06-22T02:37:07.3499638Z       "title": "Agent endpoints vs Shells distinction in the type model",
2026-06-22T02:37:07.3499751Z       "requiredStages": [
2026-06-22T02:37:07.3499851Z         "impl",
2026-06-22T02:37:07.3499957Z         "unit"
2026-06-22T02:37:07.3500051Z       ],
2026-06-22T02:37:07.3500152Z       "stages": {
2026-06-22T02:37:07.3500248Z         "doc": {
2026-06-22T02:37:07.3500365Z           "complete": false,
2026-06-22T02:37:07.3500467Z           "evidence": []
2026-06-22T02:37:07.3500573Z         },
2026-06-22T02:37:07.3500676Z         "impl": {
2026-06-22T02:37:07.3500784Z           "complete": true,
2026-06-22T02:37:07.3500885Z           "evidence": [
2026-06-22T02:37:07.3500993Z             {
2026-06-22T02:37:07.3501140Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3501241Z               "line": 114
2026-06-22T02:37:07.3501345Z             },
2026-06-22T02:37:07.3501455Z             {
2026-06-22T02:37:07.3501598Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3501712Z               "line": 131
2026-06-22T02:37:07.3501808Z             },
2026-06-22T02:37:07.3501913Z             {
2026-06-22T02:37:07.3502046Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3502161Z               "line": 138
2026-06-22T02:37:07.3502260Z             }
2026-06-22T02:37:07.3502361Z           ]
2026-06-22T02:37:07.3502472Z         },
2026-06-22T02:37:07.3502570Z         "int": {
2026-06-22T02:37:07.3502690Z           "complete": false,
2026-06-22T02:37:07.3502796Z           "evidence": []
2026-06-22T02:37:07.3502899Z         },
2026-06-22T02:37:07.3503009Z         "unit": {
2026-06-22T02:37:07.3503125Z           "complete": true,
2026-06-22T02:37:07.3503237Z           "evidence": [
2026-06-22T02:37:07.3503339Z             {
2026-06-22T02:37:07.3503482Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3503585Z               "line": 190
2026-06-22T02:37:07.3503690Z             },
2026-06-22T02:37:07.3503805Z             {
2026-06-22T02:37:07.3503938Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3504048Z               "line": 208
2026-06-22T02:37:07.3504148Z             },
2026-06-22T02:37:07.3504252Z             {
2026-06-22T02:37:07.3504397Z               "path": "crates/spt-proto/src/endpoint.rs",
2026-06-22T02:37:07.3504511Z               "line": 221
2026-06-22T02:37:07.3504615Z             }
2026-06-22T02:37:07.3504707Z           ]
2026-06-22T02:37:07.3504806Z         }
2026-06-22T02:37:07.3504906Z       }
2026-06-22T02:37:07.3505012Z     },
2026-06-22T02:37:07.3505106Z     {
2026-06-22T02:37:07.3505225Z       "id": "REQ-EP-3",
2026-06-22T02:37:07.3505440Z       "title": "Messaging payloads carry typed operation commands + file blobs",
2026-06-22T02:37:07.3505559Z       "requiredStages": [
2026-06-22T02:37:07.3505666Z         "impl",
2026-06-22T02:37:07.3505768Z         "unit"
2026-06-22T02:37:07.3505868Z       ],
2026-06-22T02:37:07.3505958Z       "stages": {
2026-06-22T02:37:07.3506171Z         "doc": {
2026-06-22T02:37:07.3506295Z           "complete": false,
2026-06-22T02:37:07.3506401Z           "evidence": []
2026-06-22T02:37:07.3506505Z         },
2026-06-22T02:37:07.3506605Z         "impl": {
2026-06-22T02:37:07.3506725Z           "complete": true,
2026-06-22T02:37:07.3506829Z           "evidence": [
2026-06-22T02:37:07.3506935Z             {
2026-06-22T02:37:07.3507091Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:37:07.3507211Z               "line": 31
2026-06-22T02:37:07.3507316Z             },
2026-06-22T02:37:07.3507415Z             {
2026-06-22T02:37:07.3507559Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:37:07.3507759Z               "line": 49
2026-06-22T02:37:07.3510583Z             }
2026-06-22T02:37:07.3510717Z           ]
2026-06-22T02:37:07.3510822Z         },
2026-06-22T02:37:07.3510926Z         "int": {
2026-06-22T02:37:07.3511037Z           "complete": false,
2026-06-22T02:37:07.3511161Z           "evidence": []
2026-06-22T02:37:07.3511255Z         },
2026-06-22T02:37:07.3511363Z         "unit": {
2026-06-22T02:37:07.3511483Z           "complete": true,
2026-06-22T02:37:07.3511586Z           "evidence": [
2026-06-22T02:37:07.3511685Z             {
2026-06-22T02:37:07.3511840Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:37:07.3511957Z               "line": 156
2026-06-22T02:37:07.3512058Z             },
2026-06-22T02:37:07.3512158Z             {
2026-06-22T02:37:07.3512315Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:37:07.3512412Z               "line": 164
2026-06-22T02:37:07.3512521Z             },
2026-06-22T02:37:07.3512625Z             {
2026-06-22T02:37:07.3512769Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:37:07.3512878Z               "line": 177
2026-06-22T02:37:07.3512983Z             },
2026-06-22T02:37:07.3513088Z             {
2026-06-22T02:37:07.3513221Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:37:07.3513332Z               "line": 200
2026-06-22T02:37:07.3513436Z             },
2026-06-22T02:37:07.3513531Z             {
2026-06-22T02:37:07.3513671Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:37:07.3513770Z               "line": 216
2026-06-22T02:37:07.3513874Z             },
2026-06-22T02:37:07.3513966Z             {
2026-06-22T02:37:07.3514108Z               "path": "crates/spt-proto/src/payload.rs",
2026-06-22T02:37:07.3514217Z               "line": 233
2026-06-22T02:37:07.3514322Z             }
2026-06-22T02:37:07.3514423Z           ]
2026-06-22T02:37:07.3514527Z         }
2026-06-22T02:37:07.3514627Z       }
2026-06-22T02:37:07.3514728Z     },
2026-06-22T02:37:07.3514827Z     {
2026-06-22T02:37:07.3514938Z       "id": "REQ-EP-4",
2026-06-22T02:37:07.3515122Z       "title": "PresenceChannel broker endpoint (seam day-one)",
2026-06-22T02:37:07.3515238Z       "requiredStages": [
2026-06-22T02:37:07.3515347Z         "impl",
2026-06-22T02:37:07.3515451Z         "unit"
2026-06-22T02:37:07.3515553Z       ],
2026-06-22T02:37:07.3515652Z       "stages": {
2026-06-22T02:37:07.3515757Z         "doc": {
2026-06-22T02:37:07.3515872Z           "complete": false,
2026-06-22T02:37:07.3515981Z           "evidence": []
2026-06-22T02:37:07.3516086Z         },
2026-06-22T02:37:07.3516192Z         "impl": {
2026-06-22T02:37:07.3516301Z           "complete": true,
2026-06-22T02:37:07.3516414Z           "evidence": [
2026-06-22T02:37:07.3516509Z             {
2026-06-22T02:37:07.3516660Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3516769Z               "line": 778
2026-06-22T02:37:07.3516875Z             },
2026-06-22T02:37:07.3516970Z             {
2026-06-22T02:37:07.3517107Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3517218Z               "line": 1221
2026-06-22T02:37:07.3517318Z             },
2026-06-22T02:37:07.3517408Z             {
2026-06-22T02:37:07.3517542Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3517900Z               "line": 2169
2026-06-22T02:37:07.3518028Z             },
2026-06-22T02:37:07.3518124Z             {
2026-06-22T02:37:07.3518267Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3518376Z               "line": 125
2026-06-22T02:37:07.3518482Z             },
2026-06-22T02:37:07.3518576Z             {
2026-06-22T02:37:07.3518715Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3518825Z               "line": 715
2026-06-22T02:37:07.3518924Z             },
2026-06-22T02:37:07.3519117Z             {
2026-06-22T02:37:07.3519239Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3519448Z               "line": 864
2026-06-22T02:37:07.3519551Z             },
2026-06-22T02:37:07.3519655Z             {
2026-06-22T02:37:07.3519804Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3519908Z               "line": 271
2026-06-22T02:37:07.3520008Z             },
2026-06-22T02:37:07.3520109Z             {
2026-06-22T02:37:07.3520256Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3520362Z               "line": 458
2026-06-22T02:37:07.3520467Z             },
2026-06-22T02:37:07.3520571Z             {
2026-06-22T02:37:07.3520715Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3520828Z               "line": 1246
2026-06-22T02:37:07.3520923Z             }
2026-06-22T02:37:07.3521025Z           ]
2026-06-22T02:37:07.3521129Z         },
2026-06-22T02:37:07.3521229Z         "int": {
2026-06-22T02:37:07.3521345Z           "complete": false,
2026-06-22T02:37:07.3521453Z           "evidence": []
2026-06-22T02:37:07.3521563Z         },
2026-06-22T02:37:07.3521664Z         "unit": {
2026-06-22T02:37:07.3521777Z           "complete": true,
2026-06-22T02:37:07.3521876Z           "evidence": [
2026-06-22T02:37:07.3521982Z             {
2026-06-22T02:37:07.3522113Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3522222Z               "line": 955
2026-06-22T02:37:07.3522327Z             },
2026-06-22T02:37:07.3522428Z             {
2026-06-22T02:37:07.3522589Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T02:37:07.3522700Z               "line": 76
2026-06-22T02:37:07.3522799Z             },
2026-06-22T02:37:07.3522894Z             {
2026-06-22T02:37:07.3523029Z               "path": "crates/spt-daemon/tests/presence.rs",
2026-06-22T02:37:07.3523137Z               "line": 147
2026-06-22T02:37:07.3523229Z             }
2026-06-22T02:37:07.3523329Z           ]
2026-06-22T02:37:07.3523434Z         }
2026-06-22T02:37:07.3523533Z       }
2026-06-22T02:37:07.3523644Z     },
2026-06-22T02:37:07.3523744Z     {
2026-06-22T02:37:07.3523844Z       "id": "REQ-EP-5",
2026-06-22T02:37:07.3524532Z       "title": "Concrete shell instantiation model: spawn-mints-instance (vs relink/online), registered-on-node permission + broadcast-is-discovery, per-shell require_approval gate, max_instances_per_owner + over_cap, instance aliasing, discovery scope",
2026-06-22T02:37:07.3524654Z       "requiredStages": [
2026-06-22T02:37:07.3524762Z         "impl",
2026-06-22T02:37:07.3524863Z         "unit",
2026-06-22T02:37:07.3524964Z         "int"
2026-06-22T02:37:07.3525063Z       ],
2026-06-22T02:37:07.3525168Z       "stages": {
2026-06-22T02:37:07.3525268Z         "doc": {
2026-06-22T02:37:07.3525372Z           "complete": false,
2026-06-22T02:37:07.3525483Z           "evidence": []
2026-06-22T02:37:07.3525583Z         },
2026-06-22T02:37:07.3525687Z         "impl": {
2026-06-22T02:37:07.3525793Z           "complete": true,
2026-06-22T02:37:07.3525903Z           "evidence": [
2026-06-22T02:37:07.3526007Z             {
2026-06-22T02:37:07.3526161Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.3526274Z               "line": 367
2026-06-22T02:37:07.3526365Z             },
2026-06-22T02:37:07.3526466Z             {
2026-06-22T02:37:07.3526612Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:37:07.3526833Z               "line": 18
2026-06-22T02:37:07.3526936Z             },
2026-06-22T02:37:07.3527040Z             {
2026-06-22T02:37:07.3527188Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:37:07.3527296Z               "line": 63
2026-06-22T02:37:07.3527396Z             },
2026-06-22T02:37:07.3527487Z             {
2026-06-22T02:37:07.3527634Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:37:07.3527740Z               "line": 92
2026-06-22T02:37:07.3527845Z             },
2026-06-22T02:37:07.3527944Z             {
2026-06-22T02:37:07.3528084Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:37:07.3528273Z               "line": 167
2026-06-22T02:37:07.3528370Z             },
2026-06-22T02:37:07.3528479Z             {
2026-06-22T02:37:07.3528621Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:37:07.3528732Z               "line": 179
2026-06-22T02:37:07.3528837Z             },
2026-06-22T02:37:07.3529019Z             {
2026-06-22T02:37:07.3529165Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.3529265Z               "line": 114
2026-06-22T02:37:07.3529372Z             },
2026-06-22T02:37:07.3529475Z             {
2026-06-22T02:37:07.3529615Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3529728Z               "line": 22
2026-06-22T02:37:07.3529832Z             },
2026-06-22T02:37:07.3529932Z             {
2026-06-22T02:37:07.3530073Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3530177Z               "line": 145
2026-06-22T02:37:07.3530287Z             },
2026-06-22T02:37:07.3530374Z             {
2026-06-22T02:37:07.3530516Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3530622Z               "line": 174
2026-06-22T02:37:07.3530717Z             },
2026-06-22T02:37:07.3530816Z             {
2026-06-22T02:37:07.3530956Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3531055Z               "line": 196
2026-06-22T02:37:07.3531155Z             },
2026-06-22T02:37:07.3531256Z             {
2026-06-22T02:37:07.3531398Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3531503Z               "line": 221
2026-06-22T02:37:07.3531590Z             },
2026-06-22T02:37:07.3531689Z             {
2026-06-22T02:37:07.3531827Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3531929Z               "line": 247
2026-06-22T02:37:07.3532037Z             },
2026-06-22T02:37:07.3532132Z             {
2026-06-22T02:37:07.3532281Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3532389Z               "line": 270
2026-06-22T02:37:07.3532494Z             },
2026-06-22T02:37:07.3532594Z             {
2026-06-22T02:37:07.3532730Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.3532830Z               "line": 104
2026-06-22T02:37:07.3532936Z             },
2026-06-22T02:37:07.3533035Z             {
2026-06-22T02:37:07.3533164Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3533274Z               "line": 6068
2026-06-22T02:37:07.3533374Z             },
2026-06-22T02:37:07.3533469Z             {
2026-06-22T02:37:07.3533598Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3533698Z               "line": 6202
2026-06-22T02:37:07.3533794Z             },
2026-06-22T02:37:07.3533889Z             {
2026-06-22T02:37:07.3534017Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3534123Z               "line": 6368
2026-06-22T02:37:07.3534228Z             },
2026-06-22T02:37:07.3534332Z             {
2026-06-22T02:37:07.3534457Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3534561Z               "line": 6896
2026-06-22T02:37:07.3534666Z             }
2026-06-22T02:37:07.3534763Z           ]
2026-06-22T02:37:07.3534866Z         },
2026-06-22T02:37:07.3535058Z         "int": {
2026-06-22T02:37:07.3535177Z           "complete": true,
2026-06-22T02:37:07.3535280Z           "evidence": [
2026-06-22T02:37:07.3535385Z             {
2026-06-22T02:37:07.3535524Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:37:07.3535627Z               "line": 16
2026-06-22T02:37:07.3535734Z             },
2026-06-22T02:37:07.3535833Z             {
2026-06-22T02:37:07.3535976Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:37:07.3536077Z               "line": 15
2026-06-22T02:37:07.3536182Z             }
2026-06-22T02:37:07.3536290Z           ]
2026-06-22T02:37:07.3536377Z         },
2026-06-22T02:37:07.3536581Z         "unit": {
2026-06-22T02:37:07.3536692Z           "complete": true,
2026-06-22T02:37:07.3536806Z           "evidence": [
2026-06-22T02:37:07.3536905Z             {
2026-06-22T02:37:07.3537050Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:37:07.3537158Z               "line": 246
2026-06-22T02:37:07.3537264Z             },
2026-06-22T02:37:07.3537370Z             {
2026-06-22T02:37:07.3537515Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:37:07.3537620Z               "line": 306
2026-06-22T02:37:07.3537711Z             },
2026-06-22T02:37:07.3537813Z             {
2026-06-22T02:37:07.3537957Z               "path": "crates/spt-daemon/src/shelldisc.rs",
2026-06-22T02:37:07.3538072Z               "line": 363
2026-06-22T02:37:07.3538175Z             },
2026-06-22T02:37:07.3538276Z             {
2026-06-22T02:37:07.3538424Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3538533Z               "line": 286
2026-06-22T02:37:07.3538634Z             },
2026-06-22T02:37:07.3538739Z             {
2026-06-22T02:37:07.3538881Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3539058Z               "line": 338
2026-06-22T02:37:07.3539157Z             },
2026-06-22T02:37:07.3539264Z             {
2026-06-22T02:37:07.3539407Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.3539511Z               "line": 783
2026-06-22T02:37:07.3539617Z             },
2026-06-22T02:37:07.3539720Z             {
2026-06-22T02:37:07.3539845Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3539951Z               "line": 8751
2026-06-22T02:37:07.3540049Z             },
2026-06-22T02:37:07.3540150Z             {
2026-06-22T02:37:07.3540275Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3540382Z               "line": 8904
2026-06-22T02:37:07.3540482Z             },
2026-06-22T02:37:07.3540583Z             {
2026-06-22T02:37:07.3540690Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3540799Z               "line": 9493
2026-06-22T02:37:07.3540891Z             },
2026-06-22T02:37:07.3540991Z             {
2026-06-22T02:37:07.3541119Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3541220Z               "line": 9609
2026-06-22T02:37:07.3541310Z             }
2026-06-22T02:37:07.3541419Z           ]
2026-06-22T02:37:07.3541521Z         }
2026-06-22T02:37:07.3541621Z       }
2026-06-22T02:37:07.3541720Z     },
2026-06-22T02:37:07.3541826Z     {
2026-06-22T02:37:07.3541925Z       "id": "REQ-EP-6",
2026-06-22T02:37:07.3543419Z       "title": "Gateway type acceptance: a Gateway-typed perch binds (api bind --type, open type system — un-hardcode the live_agent default), advertises/addressable like any endpoint, owns shells (owner validation not agent-family-gated), subscribes to digests, and is the user-msg identity gate's user-backed origin (REQ-MSG-5); in-tree mock-gateway fixture (R-DOCS-2 pattern, no downstream adapter code). Cross-node WAN Gateway-origin (registry endpoint_type trust) tracked by REQ-MSG-6",
2026-06-22T02:37:07.3543539Z       "requiredStages": [
2026-06-22T02:37:07.3543638Z         "doc",
2026-06-22T02:37:07.3543739Z         "impl",
2026-06-22T02:37:07.3543839Z         "unit"
2026-06-22T02:37:07.3543943Z       ],
2026-06-22T02:37:07.3544144Z       "stages": {
2026-06-22T02:37:07.3544243Z         "doc": {
2026-06-22T02:37:07.3544359Z           "complete": true,
2026-06-22T02:37:07.3544463Z           "evidence": [
2026-06-22T02:37:07.3544568Z             {
2026-06-22T02:37:07.3544678Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.3544788Z               "line": 227
2026-06-22T02:37:07.3544887Z             }
2026-06-22T02:37:07.3544983Z           ]
2026-06-22T02:37:07.3545074Z         },
2026-06-22T02:37:07.3545178Z         "impl": {
2026-06-22T02:37:07.3545294Z           "complete": true,
2026-06-22T02:37:07.3545398Z           "evidence": [
2026-06-22T02:37:07.3545502Z             {
2026-06-22T02:37:07.3545732Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3545845Z               "line": 212
2026-06-22T02:37:07.3545945Z             }
2026-06-22T02:37:07.3546051Z           ]
2026-06-22T02:37:07.3546150Z         },
2026-06-22T02:37:07.3546255Z         "int": {
2026-06-22T02:37:07.3546361Z           "complete": true,
2026-06-22T02:37:07.3546469Z           "evidence": [
2026-06-22T02:37:07.3546574Z             {
2026-06-22T02:37:07.3546718Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T02:37:07.3546831Z               "line": 18
2026-06-22T02:37:07.3546938Z             }
2026-06-22T02:37:07.3547037Z           ]
2026-06-22T02:37:07.3547137Z         },
2026-06-22T02:37:07.3547233Z         "unit": {
2026-06-22T02:37:07.3547352Z           "complete": true,
2026-06-22T02:37:07.3547447Z           "evidence": [
2026-06-22T02:37:07.3547548Z             {
2026-06-22T02:37:07.3547700Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.3547809Z               "line": 556
2026-06-22T02:37:07.3547915Z             },
2026-06-22T02:37:07.3548014Z             {
2026-06-22T02:37:07.3548142Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3548247Z               "line": 904
2026-06-22T02:37:07.3548346Z             }
2026-06-22T02:37:07.3548449Z           ]
2026-06-22T02:37:07.3548550Z         }
2026-06-22T02:37:07.3548647Z       }
2026-06-22T02:37:07.3548750Z     },
2026-06-22T02:37:07.3548841Z     {
2026-06-22T02:37:07.3549022Z       "id": "REQ-EP-7",
2026-06-22T02:37:07.3550657Z       "title": "Durable live-role.md: a per-agent broad-purpose statement in tracked/agents/<id>/ beside live-context.md (replicates with the mind on the same a-<id> branch); renders FIRST at start-transition context injection (role -> live-context -> project-context); SOLE writer `spt endpoint role --overwrite <file>` — mechanical no-automated-writer guarantee (echo-commune ingest / signoff / Psyche reconcile structurally exclude it). The user-backed-origin hard gate on the writer is a deferred later tightening (rides the user-msg identity plumbing)",
2026-06-22T02:37:07.3550787Z       "requiredStages": [
2026-06-22T02:37:07.3550886Z         "doc",
2026-06-22T02:37:07.3551000Z         "impl",
2026-06-22T02:37:07.3551100Z         "unit"
2026-06-22T02:37:07.3551199Z       ],
2026-06-22T02:37:07.3551307Z       "stages": {
2026-06-22T02:37:07.3551412Z         "doc": {
2026-06-22T02:37:07.3551528Z           "complete": true,
2026-06-22T02:37:07.3551626Z           "evidence": [
2026-06-22T02:37:07.3551732Z             {
2026-06-22T02:37:07.3551852Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.3551955Z               "line": 490
2026-06-22T02:37:07.3552057Z             }
2026-06-22T02:37:07.3552161Z           ]
2026-06-22T02:37:07.3552265Z         },
2026-06-22T02:37:07.3552366Z         "impl": {
2026-06-22T02:37:07.3552480Z           "complete": true,
2026-06-22T02:37:07.3552585Z           "evidence": [
2026-06-22T02:37:07.3552691Z             {
2026-06-22T02:37:07.3552837Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.3552948Z               "line": 505
2026-06-22T02:37:07.3553054Z             },
2026-06-22T02:37:07.3553152Z             {
2026-06-22T02:37:07.3553297Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:37:07.3553406Z               "line": 87
2026-06-22T02:37:07.3553633Z             },
2026-06-22T02:37:07.3553742Z             {
2026-06-22T02:37:07.3553883Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.3553989Z               "line": 81
2026-06-22T02:37:07.3554089Z             },
2026-06-22T02:37:07.3554193Z             {
2026-06-22T02:37:07.3554351Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.3554460Z               "line": 166
2026-06-22T02:37:07.3554560Z             },
2026-06-22T02:37:07.3554661Z             {
2026-06-22T02:37:07.3554799Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3554900Z               "line": 1645
2026-06-22T02:37:07.3555109Z             }
2026-06-22T02:37:07.3555214Z           ]
2026-06-22T02:37:07.3555314Z         },
2026-06-22T02:37:07.3555419Z         "int": {
2026-06-22T02:37:07.3555529Z           "complete": false,
2026-06-22T02:37:07.3555634Z           "evidence": []
2026-06-22T02:37:07.3555734Z         },
2026-06-22T02:37:07.3555849Z         "unit": {
2026-06-22T02:37:07.3555963Z           "complete": true,
2026-06-22T02:37:07.3556067Z           "evidence": [
2026-06-22T02:37:07.3556174Z             {
2026-06-22T02:37:07.3556315Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.3556428Z               "line": 623
2026-06-22T02:37:07.3556529Z             },
2026-06-22T02:37:07.3556635Z             {
2026-06-22T02:37:07.3556776Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.3556882Z               "line": 212
2026-06-22T02:37:07.3556992Z             },
2026-06-22T02:37:07.3557081Z             {
2026-06-22T02:37:07.3557216Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:37:07.3557326Z               "line": 307
2026-06-22T02:37:07.3557425Z             },
2026-06-22T02:37:07.3557526Z             {
2026-06-22T02:37:07.3557650Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3557764Z               "line": 7724
2026-06-22T02:37:07.3557874Z             },
2026-06-22T02:37:07.3557979Z             {
2026-06-22T02:37:07.3558113Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3558208Z               "line": 7751
2026-06-22T02:37:07.3558317Z             }
2026-06-22T02:37:07.3558418Z           ]
2026-06-22T02:37:07.3558523Z         }
2026-06-22T02:37:07.3558626Z       }
2026-06-22T02:37:07.3558730Z     },
2026-06-22T02:37:07.3558831Z     {
2026-06-22T02:37:07.3559024Z       "id": "REQ-FRONT-1",
2026-06-22T02:37:07.3559225Z       "title": "Day-one launcher/manager frontend (list/launch/attach/init)",
2026-06-22T02:37:07.3559334Z       "requiredStages": [],
2026-06-22T02:37:07.3559439Z       "stages": {
2026-06-22T02:37:07.3559540Z         "doc": {
2026-06-22T02:37:07.3559653Z           "complete": false,
2026-06-22T02:37:07.3559764Z           "evidence": []
2026-06-22T02:37:07.3559859Z         },
2026-06-22T02:37:07.3559968Z         "impl": {
2026-06-22T02:37:07.3560074Z           "complete": false,
2026-06-22T02:37:07.3560183Z           "evidence": []
2026-06-22T02:37:07.3560287Z         },
2026-06-22T02:37:07.3560393Z         "int": {
2026-06-22T02:37:07.3560497Z           "complete": false,
2026-06-22T02:37:07.3560607Z           "evidence": []
2026-06-22T02:37:07.3560718Z         },
2026-06-22T02:37:07.3560822Z         "unit": {
2026-06-22T02:37:07.3560936Z           "complete": false,
2026-06-22T02:37:07.3561033Z           "evidence": []
2026-06-22T02:37:07.3561141Z         }
2026-06-22T02:37:07.3561241Z       }
2026-06-22T02:37:07.3561347Z     },
2026-06-22T02:37:07.3561447Z     {
2026-06-22T02:37:07.3561574Z       "id": "REQ-HAZARD-ATTACH-WEDGE",
2026-06-22T02:37:07.3566843Z       "title": "A legitimately dead PTY child (real crash/kill) + an undrained operator pump must NOT wedge the broker for all other clients. ROOT (v0.12.0 real-harness defect): loopback attach output is a blocking write_all into a bounded 64KB tokio duplex (nethost.rs:1040,1090); when the operator's rc pump stops draining (tab closed) the buffer fills and write_all blocks forever (the 'loopback never hangs' assumption at nethost.rs:1103 is false), parking a worker in the 2-worker net runtime (nethost.rs:640); a couple of these saturate BOTH workers → every new attach / `endpoint run` stalls right after 'PUMP_IPC_READER: spawned' → 30s FIRST_EVENT_GRACE → 'no output / dead or wedged'; `daemon stop` cannot join the stuck workers. DISTINCT from the removed B1 path-(c) mutex deadlock. DISPOSITION = PROVE-DON'T-CHANGE (doyle GATE-PASS @e883f45, 2026-06-18): this ROOT is the SUPERSEDED v0.12.0 hypothesis — the post-L0 code ALREADY prevents the wedge, so NO fail-fast / worker-count code was added. serve_attach forwards fire-and-forget (net_stream_send op_id=None) and the broker-side send_stream is already BROKER-QUIC-DEADLINE-bounded (bounded_block_on, 10s); the loopback duplex is drained broker-INTERNALLY by the operator row's own read pump (RecvHalf::Loopback, retentive_cap==0 → evict-not-park) so a dead rc (a dropped IPC subscriber) never backs peer_w up; bounded_block_on parks the BROKER DISPATCH thread, not a net worker → no worker-pool exhaustion (full mechanism in the required_stages comment). Folds the status=online sub-check: a dead spt-hosted endpoint is marked OFFLINE within one reconcile tick on abrupt child death (broker exit-waiter reaps the session → B2 sees it absent) — PROVEN, no change. (v0.12.1)",
2026-06-22T02:37:07.3567186Z       "requiredStages": [
2026-06-22T02:37:07.3567294Z         "int"
2026-06-22T02:37:07.3567394Z       ],
2026-06-22T02:37:07.3567500Z       "stages": {
2026-06-22T02:37:07.3567604Z         "doc": {
2026-06-22T02:37:07.3567714Z           "complete": false,
2026-06-22T02:37:07.3567838Z           "evidence": []
2026-06-22T02:37:07.3567938Z         },
2026-06-22T02:37:07.3568038Z         "impl": {
2026-06-22T02:37:07.3568153Z           "complete": false,
2026-06-22T02:37:07.3568247Z           "evidence": []
2026-06-22T02:37:07.3568348Z         },
2026-06-22T02:37:07.3568453Z         "int": {
2026-06-22T02:37:07.3568558Z           "complete": true,
2026-06-22T02:37:07.3568673Z           "evidence": [
2026-06-22T02:37:07.3568778Z             {
2026-06-22T02:37:07.3568934Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T02:37:07.3569107Z               "line": 300
2026-06-22T02:37:07.3569205Z             }
2026-06-22T02:37:07.3569295Z           ]
2026-06-22T02:37:07.3569405Z         },
2026-06-22T02:37:07.3569508Z         "unit": {
2026-06-22T02:37:07.3569622Z           "complete": false,
2026-06-22T02:37:07.3569728Z           "evidence": []
2026-06-22T02:37:07.3569828Z         }
2026-06-22T02:37:07.3569937Z       }
2026-06-22T02:37:07.3570038Z     },
2026-06-22T02:37:07.3570156Z     {
2026-06-22T02:37:07.3570286Z       "id": "REQ-HAZARD-BIND-CWD-UNSET",
2026-06-22T02:37:07.3572790Z       "title": "A bound endpoint's `info.cwd` is SET at bind so a freshly-created perch appears under its own project tab. ROOT (found, v0.13.0): `info.cwd` is NEVER set on bind — `cmd_bind` (spt-hosted) and `bind_from_seed` (harness-hosted) never thread cwd into `establish_perch`/`rec.cwd`. FIX: `cmd_bind` reads its own `current_dir` (the broker spawned it in `project_cwd`); `bind_from_seed` passes `seed.cwd` (already captured at seed time, currently DISCARDED). DISTINCT from REQ-PICKER-HISTORY-FRESH (v0.12.1) — that unioned cwd-origin into picker MEMBERSHIP but tested merge_origin_project with a PROVIDED origin; it never asserted `info.cwd` is actually set on bind, so a real `endpoint run` perch still had an empty cwd and the union had nothing to union. This is the v0.12.1 P1 'appears under its own project right away' claim that was REFUTED in the changelog — delivered for real here. (v0.13.0)",
2026-06-22T02:37:07.3572929Z       "requiredStages": [
2026-06-22T02:37:07.3573038Z         "impl",
2026-06-22T02:37:07.3573143Z         "unit",
2026-06-22T02:37:07.3573244Z         "int"
2026-06-22T02:37:07.3573348Z       ],
2026-06-22T02:37:07.3573453Z       "stages": {
2026-06-22T02:37:07.3573559Z         "doc": {
2026-06-22T02:37:07.3573767Z           "complete": false,
2026-06-22T02:37:07.3573883Z           "evidence": []
2026-06-22T02:37:07.3573987Z         },
2026-06-22T02:37:07.3574092Z         "impl": {
2026-06-22T02:37:07.3574203Z           "complete": true,
2026-06-22T02:37:07.3574306Z           "evidence": [
2026-06-22T02:37:07.3574412Z             {
2026-06-22T02:37:07.3574555Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3574663Z               "line": 257
2026-06-22T02:37:07.3574754Z             }
2026-06-22T02:37:07.3574858Z           ]
2026-06-22T02:37:07.3574956Z         },
2026-06-22T02:37:07.3575056Z         "int": {
2026-06-22T02:37:07.3575162Z           "complete": true,
2026-06-22T02:37:07.3575366Z           "evidence": [
2026-06-22T02:37:07.3575467Z             {
2026-06-22T02:37:07.3575618Z               "path": "crates/spt/tests/bind_cwd_project_e2e.rs",
2026-06-22T02:37:07.3575729Z               "line": 93
2026-06-22T02:37:07.3575829Z             }
2026-06-22T02:37:07.3575938Z           ]
2026-06-22T02:37:07.3576044Z         },
2026-06-22T02:37:07.3576148Z         "unit": {
2026-06-22T02:37:07.3576267Z           "complete": true,
2026-06-22T02:37:07.3576378Z           "evidence": [
2026-06-22T02:37:07.3576482Z             {
2026-06-22T02:37:07.3576621Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3576736Z               "line": 802
2026-06-22T02:37:07.3576844Z             },
2026-06-22T02:37:07.3576935Z             {
2026-06-22T02:37:07.3577079Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3577188Z               "line": 824
2026-06-22T02:37:07.3577294Z             },
2026-06-22T02:37:07.3577394Z             {
2026-06-22T02:37:07.3577545Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3577644Z               "line": 855
2026-06-22T02:37:07.3577751Z             }
2026-06-22T02:37:07.3577849Z           ]
2026-06-22T02:37:07.3577950Z         }
2026-06-22T02:37:07.3578055Z       }
2026-06-22T02:37:07.3578154Z     },
2026-06-22T02:37:07.3578265Z     {
2026-06-22T02:37:07.3578413Z       "id": "REQ-HAZARD-BRAIN-RESPAWN-PATH",
2026-06-22T02:37:07.3580927Z       "title": "The broker respawns the brain onto the APPLIED bytes, not the renamed old binary: the candidate-binary default is the canonical exe path captured ONCE at broker start, never a per-spawn std::env::current_exe() — on Linux current_exe (readlink /proc/self/exe) is inode-tracking and follows the `apply` rename (spt -> spt.old-N), so a resident broker would respawn the brain onto OLD bytes while recording `applied` (Windows GetModuleFileName is path-at-start, so Windows was green; ADR-0018 Q3 silently assumed path-string semantics). Backstop: promotion gates on bytes — a trial promotes only if brain.ready exe_hash == the staged artifact hash for this platform, else auto-rollback + loud notif (readiness != new-bytes was the false-success that recorded applied:8 over a v0.4.0 brain on kitsubito, 2026-06-11). KNOWN-HAZARDS 6.11.",
2026-06-22T02:37:07.3581060Z       "requiredStages": [
2026-06-22T02:37:07.3581171Z         "doc",
2026-06-22T02:37:07.3581265Z         "impl",
2026-06-22T02:37:07.3581370Z         "unit",
2026-06-22T02:37:07.3581470Z         "int"
2026-06-22T02:37:07.3581570Z       ],
2026-06-22T02:37:07.3581670Z       "stages": {
2026-06-22T02:37:07.3581771Z         "doc": {
2026-06-22T02:37:07.3581881Z           "complete": true,
2026-06-22T02:37:07.3581975Z           "evidence": [
2026-06-22T02:37:07.3582081Z             {
2026-06-22T02:37:07.3582210Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3582314Z               "line": 333
2026-06-22T02:37:07.3582415Z             }
2026-06-22T02:37:07.3582525Z           ]
2026-06-22T02:37:07.3582623Z         },
2026-06-22T02:37:07.3582723Z         "impl": {
2026-06-22T02:37:07.3582832Z           "complete": true,
2026-06-22T02:37:07.3582936Z           "evidence": [
2026-06-22T02:37:07.3583035Z             {
2026-06-22T02:37:07.3583188Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3583398Z               "line": 494
2026-06-22T02:37:07.3583503Z             },
2026-06-22T02:37:07.3583603Z             {
2026-06-22T02:37:07.3583747Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3583861Z               "line": 499
2026-06-22T02:37:07.3583964Z             },
2026-06-22T02:37:07.3584057Z             {
2026-06-22T02:37:07.3584199Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3584313Z               "line": 874
2026-06-22T02:37:07.3584410Z             },
2026-06-22T02:37:07.3584513Z             {
2026-06-22T02:37:07.3584662Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3584881Z               "line": 915
2026-06-22T02:37:07.3584987Z             },
2026-06-22T02:37:07.3585077Z             {
2026-06-22T02:37:07.3585223Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3585333Z               "line": 926
2026-06-22T02:37:07.3585441Z             },
2026-06-22T02:37:07.3585549Z             {
2026-06-22T02:37:07.3585688Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.3585803Z               "line": 358
2026-06-22T02:37:07.3585902Z             }
2026-06-22T02:37:07.3586013Z           ]
2026-06-22T02:37:07.3586113Z         },
2026-06-22T02:37:07.3586222Z         "int": {
2026-06-22T02:37:07.3586328Z           "complete": true,
2026-06-22T02:37:07.3586442Z           "evidence": [
2026-06-22T02:37:07.3586536Z             {
2026-06-22T02:37:07.3586699Z               "path": "crates/spt/tests/brain_respawn_rename.rs",
2026-06-22T02:37:07.3586813Z               "line": 30
2026-06-22T02:37:07.3586924Z             }
2026-06-22T02:37:07.3587019Z           ]
2026-06-22T02:37:07.3587128Z         },
2026-06-22T02:37:07.3587224Z         "unit": {
2026-06-22T02:37:07.3587334Z           "complete": true,
2026-06-22T02:37:07.3587438Z           "evidence": [
2026-06-22T02:37:07.3587534Z             {
2026-06-22T02:37:07.3587681Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3587786Z               "line": 1493
2026-06-22T02:37:07.3587892Z             },
2026-06-22T02:37:07.3587996Z             {
2026-06-22T02:37:07.3588142Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3588258Z               "line": 1518
2026-06-22T02:37:07.3588362Z             },
2026-06-22T02:37:07.3588466Z             {
2026-06-22T02:37:07.3588606Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3588714Z               "line": 1535
2026-06-22T02:37:07.3588815Z             },
2026-06-22T02:37:07.3588920Z             {
2026-06-22T02:37:07.3589149Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3589268Z               "line": 1578
2026-06-22T02:37:07.3589372Z             }
2026-06-22T02:37:07.3589464Z           ]
2026-06-22T02:37:07.3589564Z         }
2026-06-22T02:37:07.3589664Z       }
2026-06-22T02:37:07.3589769Z     },
2026-06-22T02:37:07.3589874Z     {
2026-06-22T02:37:07.3590040Z       "id": "REQ-HAZARD-BRAIN-RESTART-LIFECYCLE-REHYDRATE",
2026-06-22T02:37:07.3592583Z       "title": "B4 (deepest): a bare brain restart (broker survives) REHYDRATES the live-agent lifecycle so post-restart endpoints are hosted + attachable. Today resume_sessions (brainproc.rs:186, brain.rs:797-809) re-subscribes to the broker's PTY sessions but ALL BrainLifecycle instances (lifecycle.rs:58-130; the ephemeral brain.rs:254-275) are LOST on restart → a post-restart live endpoint gets no livehost → its Psyche is never (re)hosted and new spawns die / can't attach until a FULL daemon reset (operator: perri's brain kill+restart wedged everything until a full daemon kill). FIX: on brain startup, rebuild a BrainLifecycle per resumed live-capable session — load the manifest from the adapter registry → instantiate → start the pulse — the rehydrate the resume no-op cannot do. Composes with B2 (the reconcile re-hosts from the honest on-disk status after rehydrate). (v0.12.0)",
2026-06-22T02:37:07.3592816Z       "requiredStages": [],
2026-06-22T02:37:07.3592917Z       "stages": {
2026-06-22T02:37:07.3593024Z         "doc": {
2026-06-22T02:37:07.3593122Z           "complete": false,
2026-06-22T02:37:07.3593230Z           "evidence": []
2026-06-22T02:37:07.3593331Z         },
2026-06-22T02:37:07.3593439Z         "impl": {
2026-06-22T02:37:07.3593552Z           "complete": false,
2026-06-22T02:37:07.3593653Z           "evidence": []
2026-06-22T02:37:07.3593753Z         },
2026-06-22T02:37:07.3593853Z         "int": {
2026-06-22T02:37:07.3593968Z           "complete": false,
2026-06-22T02:37:07.3594073Z           "evidence": []
2026-06-22T02:37:07.3594278Z         },
2026-06-22T02:37:07.3594388Z         "unit": {
2026-06-22T02:37:07.3594492Z           "complete": false,
2026-06-22T02:37:07.3594602Z           "evidence": []
2026-06-22T02:37:07.3594702Z         }
2026-06-22T02:37:07.3594797Z       }
2026-06-22T02:37:07.3594898Z     },
2026-06-22T02:37:07.3594998Z     {
2026-06-22T02:37:07.3595155Z       "id": "REQ-HAZARD-BRAIN-RESTART-PSYCHE-DUP",
2026-06-22T02:37:07.3598784Z       "title": "A bare brain restart leaves EXACTLY ONE `{id}-psyche` process per endpoint — no duplicate. On an abrupt brain death stop_host never runs (the LiveSet + owned child handles die with the brain) and Breap's job/group only reaps at DAEMON stop, so the PRIOR brain's Psyche stays ALIVE; the respawned brain's reconcile re-hosts a SECOND Psyche and overwrites the `{id}-psyche` perch pid, leaving the old one untracked + alive = a duplicate that lingers until daemon-stop (the operator's 'brain kill+restart wedged everything'). FIX: at brain start, BEFORE the first reconcile re-hosts, reap any pre-existing `{id}-psyche` orphan — ID-SPECIFICALLY (recycle-safe on the shared box, where sibling agents share the `claude` basename): scoped-kill the recorded pid ONLY IF it is alive AND its exe basename == the adapter's psyche program (normalize_basename) AND its COMMAND LINE contains the full psyche id `<id>-psyche` (baked via {id}); a sibling never carries THIS id, and any unreadable signal FAILS SAFE (decline to reap — a missed dup is bounded by Breap, a wrong-kill is catastrophic). CAVEAT: the cmdline carries `<id>-psyche` only when the adapter's psyche_init.command uses {id} (the norm); a non-{id} adapter safely MISSES the reap (today's behavior, Breap bounds it) — never a wrong-kill. (v0.12.0)",
2026-06-22T02:37:07.3598918Z       "requiredStages": [
2026-06-22T02:37:07.3599103Z         "impl",
2026-06-22T02:37:07.3599204Z         "unit",
2026-06-22T02:37:07.3599313Z         "int"
2026-06-22T02:37:07.3599414Z       ],
2026-06-22T02:37:07.3599518Z       "stages": {
2026-06-22T02:37:07.3599622Z         "doc": {
2026-06-22T02:37:07.3599733Z           "complete": false,
2026-06-22T02:37:07.3599838Z           "evidence": []
2026-06-22T02:37:07.3599937Z         },
2026-06-22T02:37:07.3600039Z         "impl": {
2026-06-22T02:37:07.3600152Z           "complete": true,
2026-06-22T02:37:07.3600262Z           "evidence": [
2026-06-22T02:37:07.3600363Z             {
2026-06-22T02:37:07.3600509Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3600625Z               "line": 570
2026-06-22T02:37:07.3600716Z             },
2026-06-22T02:37:07.3600824Z             {
2026-06-22T02:37:07.3600976Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3601076Z               "line": 594
2026-06-22T02:37:07.3601179Z             },
2026-06-22T02:37:07.3601278Z             {
2026-06-22T02:37:07.3601423Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3601531Z               "line": 620
2026-06-22T02:37:07.3601637Z             },
2026-06-22T02:37:07.3601751Z             {
2026-06-22T02:37:07.3601889Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3602000Z               "line": 679
2026-06-22T02:37:07.3602105Z             },
2026-06-22T02:37:07.3602213Z             {
2026-06-22T02:37:07.3602338Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.3602581Z               "line": 89
2026-06-22T02:37:07.3602686Z             },
2026-06-22T02:37:07.3602785Z             {
2026-06-22T02:37:07.3602935Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.3603043Z               "line": 134
2026-06-22T02:37:07.3603153Z             }
2026-06-22T02:37:07.3603254Z           ]
2026-06-22T02:37:07.3603358Z         },
2026-06-22T02:37:07.3603458Z         "int": {
2026-06-22T02:37:07.3603574Z           "complete": true,
2026-06-22T02:37:07.3603687Z           "evidence": [
2026-06-22T02:37:07.3603786Z             {
2026-06-22T02:37:07.3603962Z               "path": "crates/spt/tests/brain_restart_psyche_dup_e2e.rs",
2026-06-22T02:37:07.3604170Z               "line": 20
2026-06-22T02:37:07.3607056Z             }
2026-06-22T02:37:07.3607181Z           ]
2026-06-22T02:37:07.3607280Z         },
2026-06-22T02:37:07.3607380Z         "unit": {
2026-06-22T02:37:07.3607500Z           "complete": true,
2026-06-22T02:37:07.3607628Z           "evidence": [
2026-06-22T02:37:07.3607715Z             {
2026-06-22T02:37:07.3607881Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3607986Z               "line": 1047
2026-06-22T02:37:07.3608082Z             },
2026-06-22T02:37:07.3608186Z             {
2026-06-22T02:37:07.3608330Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.3608435Z               "line": 445
2026-06-22T02:37:07.3608539Z             }
2026-06-22T02:37:07.3608640Z           ]
2026-06-22T02:37:07.3608741Z         }
2026-06-22T02:37:07.3608835Z       }
2026-06-22T02:37:07.3608940Z     },
2026-06-22T02:37:07.3609140Z     {
2026-06-22T02:37:07.3609296Z       "id": "REQ-HAZARD-BROKER-PROCESS-ISOLATION",
2026-06-22T02:37:07.3611954Z       "title": "Broker and brain are separate processes: the broker runs as its own long-lived per-machine process that survives every brain restart, so a routine (brain-only) self-update restarts the brain onto the swapped binary while every hosted endpoint (PTY child, live QUIC conn, listening socket) stays untouched at the PROCESS level. The in-process-thread broker (daemon.rs:165-170) is a regression that silently unrealizes REQ-UPD-3 — apply degrades to an in-process Brain::handoff no-op and new code does not run until an unrelated restart (KNOWN-HAZARDS 6.7). Evidence must prove process-level survival (SPIKE-01/03 productionized as int: PTY child + live QUIC survive a brain-PROCESS restart onto a swapped binary), re-pointing the regression-masked in-process int tags currently on REQ-DAEMON-2 / REQ-UPD-3 (ADR-0018).",
2026-06-22T02:37:07.3612087Z       "requiredStages": [
2026-06-22T02:37:07.3612182Z         "doc",
2026-06-22T02:37:07.3612293Z         "impl",
2026-06-22T02:37:07.3612392Z         "unit",
2026-06-22T02:37:07.3612497Z         "int"
2026-06-22T02:37:07.3612598Z       ],
2026-06-22T02:37:07.3612697Z       "stages": {
2026-06-22T02:37:07.3612802Z         "doc": {
2026-06-22T02:37:07.3612913Z           "complete": true,
2026-06-22T02:37:07.3613026Z           "evidence": [
2026-06-22T02:37:07.3613126Z             {
2026-06-22T02:37:07.3613265Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3613369Z               "line": 302
2026-06-22T02:37:07.3613476Z             }
2026-06-22T02:37:07.3613575Z           ]
2026-06-22T02:37:07.3613670Z         },
2026-06-22T02:37:07.3613776Z         "impl": {
2026-06-22T02:37:07.3613886Z           "complete": true,
2026-06-22T02:37:07.3613990Z           "evidence": [
2026-06-22T02:37:07.3614091Z             {
2026-06-22T02:37:07.3614251Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.3614356Z               "line": 108
2026-06-22T02:37:07.3614461Z             },
2026-06-22T02:37:07.3614564Z             {
2026-06-22T02:37:07.3614701Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3614807Z               "line": 921
2026-06-22T02:37:07.3614898Z             },
2026-06-22T02:37:07.3615002Z             {
2026-06-22T02:37:07.3615283Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3615389Z               "line": 1137
2026-06-22T02:37:07.3615493Z             },
2026-06-22T02:37:07.3615593Z             {
2026-06-22T02:37:07.3615752Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3615855Z               "line": 23
2026-06-22T02:37:07.3615960Z             },
2026-06-22T02:37:07.3616067Z             {
2026-06-22T02:37:07.3616213Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3616328Z               "line": 113
2026-06-22T02:37:07.3616428Z             },
2026-06-22T02:37:07.3616532Z             {
2026-06-22T02:37:07.3616772Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3616889Z               "line": 158
2026-06-22T02:37:07.3616994Z             },
2026-06-22T02:37:07.3617084Z             {
2026-06-22T02:37:07.3617225Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3617330Z               "line": 218
2026-06-22T02:37:07.3617446Z             },
2026-06-22T02:37:07.3617545Z             {
2026-06-22T02:37:07.3617679Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3617779Z               "line": 261
2026-06-22T02:37:07.3617883Z             },
2026-06-22T02:37:07.3617989Z             {
2026-06-22T02:37:07.3618127Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3618226Z               "line": 275
2026-06-22T02:37:07.3618332Z             },
2026-06-22T02:37:07.3618432Z             {
2026-06-22T02:37:07.3618575Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3618680Z               "line": 320
2026-06-22T02:37:07.3618790Z             },
2026-06-22T02:37:07.3618890Z             {
2026-06-22T02:37:07.3619114Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3619219Z               "line": 347
2026-06-22T02:37:07.3619319Z             },
2026-06-22T02:37:07.3619418Z             {
2026-06-22T02:37:07.3619568Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3619672Z               "line": 359
2026-06-22T02:37:07.3619761Z             },
2026-06-22T02:37:07.3619856Z             {
2026-06-22T02:37:07.3620001Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3620104Z               "line": 373
2026-06-22T02:37:07.3620205Z             },
2026-06-22T02:37:07.3620291Z             {
2026-06-22T02:37:07.3620437Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3620539Z               "line": 400
2026-06-22T02:37:07.3620634Z             },
2026-06-22T02:37:07.3620743Z             {
2026-06-22T02:37:07.3620887Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3620996Z               "line": 643
2026-06-22T02:37:07.3621091Z             },
2026-06-22T02:37:07.3621188Z             {
2026-06-22T02:37:07.3621325Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3621435Z               "line": 989
2026-06-22T02:37:07.3621541Z             },
2026-06-22T02:37:07.3621639Z             {
2026-06-22T02:37:07.3621773Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3621870Z               "line": 274
2026-06-22T02:37:07.3621973Z             },
2026-06-22T02:37:07.3622072Z             {
2026-06-22T02:37:07.3622201Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3622304Z               "line": 1192
2026-06-22T02:37:07.3622403Z             },
2026-06-22T02:37:07.3622510Z             {
2026-06-22T02:37:07.3622647Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3622762Z               "line": 1264
2026-06-22T02:37:07.3622867Z             },
2026-06-22T02:37:07.3622966Z             {
2026-06-22T02:37:07.3623106Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3623205Z               "line": 1276
2026-06-22T02:37:07.3623309Z             },
2026-06-22T02:37:07.3623534Z             {
2026-06-22T02:37:07.3623672Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3623783Z               "line": 1894
2026-06-22T02:37:07.3623883Z             },
2026-06-22T02:37:07.3623982Z             {
2026-06-22T02:37:07.3624122Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3624231Z               "line": 188
2026-06-22T02:37:07.3624321Z             },
2026-06-22T02:37:07.3624422Z             {
2026-06-22T02:37:07.3624569Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3624670Z               "line": 265
2026-06-22T02:37:07.3624775Z             },
2026-06-22T02:37:07.3624963Z             {
2026-06-22T02:37:07.3625101Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3625209Z               "line": 276
2026-06-22T02:37:07.3625314Z             },
2026-06-22T02:37:07.3625420Z             {
2026-06-22T02:37:07.3625547Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3625663Z               "line": 329
2026-06-22T02:37:07.3625758Z             },
2026-06-22T02:37:07.3625857Z             {
2026-06-22T02:37:07.3625997Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3626106Z               "line": 56
2026-06-22T02:37:07.3626210Z             },
2026-06-22T02:37:07.3626312Z             {
2026-06-22T02:37:07.3626454Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3626563Z               "line": 188
2026-06-22T02:37:07.3626669Z             },
2026-06-22T02:37:07.3626758Z             {
2026-06-22T02:37:07.3626903Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:37:07.3627012Z               "line": 82
2026-06-22T02:37:07.3627112Z             },
2026-06-22T02:37:07.3627213Z             {
2026-06-22T02:37:07.3627346Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3627450Z               "line": 308
2026-06-22T02:37:07.3627554Z             },
2026-06-22T02:37:07.3627658Z             {
2026-06-22T02:37:07.3627795Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.3627895Z               "line": 424
2026-06-22T02:37:07.3627996Z             },
2026-06-22T02:37:07.3628095Z             {
2026-06-22T02:37:07.3628225Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3628330Z               "line": 2006
2026-06-22T02:37:07.3628424Z             }
2026-06-22T02:37:07.3628530Z           ]
2026-06-22T02:37:07.3628625Z         },
2026-06-22T02:37:07.3628724Z         "int": {
2026-06-22T02:37:07.3628835Z           "complete": true,
2026-06-22T02:37:07.3629016Z           "evidence": [
2026-06-22T02:37:07.3629130Z             {
2026-06-22T02:37:07.3629269Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:37:07.3629383Z               "line": 57
2026-06-22T02:37:07.3629479Z             },
2026-06-22T02:37:07.3629578Z             {
2026-06-22T02:37:07.3629712Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T02:37:07.3629813Z               "line": 41
2026-06-22T02:37:07.3629917Z             }
2026-06-22T02:37:07.3630017Z           ]
2026-06-22T02:37:07.3630123Z         },
2026-06-22T02:37:07.3630222Z         "unit": {
2026-06-22T02:37:07.3630340Z           "complete": true,
2026-06-22T02:37:07.3630440Z           "evidence": [
2026-06-22T02:37:07.3630532Z             {
2026-06-22T02:37:07.3630669Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.3630775Z               "line": 532
2026-06-22T02:37:07.3630875Z             },
2026-06-22T02:37:07.3630970Z             {
2026-06-22T02:37:07.3631109Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.3631208Z               "line": 757
2026-06-22T02:37:07.3631313Z             },
2026-06-22T02:37:07.3631414Z             {
2026-06-22T02:37:07.3631551Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3631661Z               "line": 1067
2026-06-22T02:37:07.3631762Z             },
2026-06-22T02:37:07.3631966Z             {
2026-06-22T02:37:07.3632105Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3632213Z               "line": 1101
2026-06-22T02:37:07.3632315Z             },
2026-06-22T02:37:07.3632416Z             {
2026-06-22T02:37:07.3632547Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3632642Z               "line": 1143
2026-06-22T02:37:07.3632747Z             },
2026-06-22T02:37:07.3632850Z             {
2026-06-22T02:37:07.3632993Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3633089Z               "line": 1215
2026-06-22T02:37:07.3633283Z             },
2026-06-22T02:37:07.3633385Z             {
2026-06-22T02:37:07.3633522Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3633632Z               "line": 1228
2026-06-22T02:37:07.3633723Z             },
2026-06-22T02:37:07.3633832Z             {
2026-06-22T02:37:07.3633980Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3634094Z               "line": 1251
2026-06-22T02:37:07.3634189Z             },
2026-06-22T02:37:07.3634286Z             {
2026-06-22T02:37:07.3634428Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3634537Z               "line": 1277
2026-06-22T02:37:07.3634644Z             },
2026-06-22T02:37:07.3634752Z             {
2026-06-22T02:37:07.3634886Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3634997Z               "line": 1291
2026-06-22T02:37:07.3635095Z             },
2026-06-22T02:37:07.3635192Z             {
2026-06-22T02:37:07.3635340Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3635457Z               "line": 1315
2026-06-22T02:37:07.3635562Z             },
2026-06-22T02:37:07.3635666Z             {
2026-06-22T02:37:07.3635807Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3635908Z               "line": 1447
2026-06-22T02:37:07.3636023Z             },
2026-06-22T02:37:07.3636122Z             {
2026-06-22T02:37:07.3636266Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3636375Z               "line": 1623
2026-06-22T02:37:07.3636470Z             },
2026-06-22T02:37:07.3636571Z             {
2026-06-22T02:37:07.3636713Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3636823Z               "line": 1678
2026-06-22T02:37:07.3636933Z             },
2026-06-22T02:37:07.3637033Z             {
2026-06-22T02:37:07.3637172Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3637276Z               "line": 1724
2026-06-22T02:37:07.3637385Z             },
2026-06-22T02:37:07.3637482Z             {
2026-06-22T02:37:07.3637633Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3637739Z               "line": 1769
2026-06-22T02:37:07.3637840Z             },
2026-06-22T02:37:07.3637943Z             {
2026-06-22T02:37:07.3638085Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3638195Z               "line": 1813
2026-06-22T02:37:07.3638293Z             },
2026-06-22T02:37:07.3638392Z             {
2026-06-22T02:37:07.3638532Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3638636Z               "line": 1855
2026-06-22T02:37:07.3638737Z             },
2026-06-22T02:37:07.3638832Z             {
2026-06-22T02:37:07.3639056Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3639161Z               "line": 2229
2026-06-22T02:37:07.3639266Z             },
2026-06-22T02:37:07.3639366Z             {
2026-06-22T02:37:07.3639509Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3639623Z               "line": 217
2026-06-22T02:37:07.3639719Z             },
2026-06-22T02:37:07.3639819Z             {
2026-06-22T02:37:07.3639952Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3640152Z               "line": 233
2026-06-22T02:37:07.3640257Z             },
2026-06-22T02:37:07.3640349Z             {
2026-06-22T02:37:07.3640481Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3640587Z               "line": 254
2026-06-22T02:37:07.3640688Z             },
2026-06-22T02:37:07.3640796Z             {
2026-06-22T02:37:07.3640924Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3641025Z               "line": 265
2026-06-22T02:37:07.3641125Z             },
2026-06-22T02:37:07.3641229Z             {
2026-06-22T02:37:07.3641359Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3641553Z               "line": 278
2026-06-22T02:37:07.3641650Z             },
2026-06-22T02:37:07.3641745Z             {
2026-06-22T02:37:07.3641887Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3641993Z               "line": 289
2026-06-22T02:37:07.3642097Z             },
2026-06-22T02:37:07.3642202Z             {
2026-06-22T02:37:07.3642341Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3642440Z               "line": 301
2026-06-22T02:37:07.3642531Z             },
2026-06-22T02:37:07.3642637Z             {
2026-06-22T02:37:07.3642765Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3642875Z               "line": 312
2026-06-22T02:37:07.3642976Z             },
2026-06-22T02:37:07.3643070Z             {
2026-06-22T02:37:07.3643212Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3643321Z               "line": 323
2026-06-22T02:37:07.3643425Z             },
2026-06-22T02:37:07.3643529Z             {
2026-06-22T02:37:07.3643663Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3643767Z               "line": 332
2026-06-22T02:37:07.3643872Z             },
2026-06-22T02:37:07.3643974Z             {
2026-06-22T02:37:07.3644110Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3644221Z               "line": 342
2026-06-22T02:37:07.3644321Z             },
2026-06-22T02:37:07.3644416Z             {
2026-06-22T02:37:07.3644550Z               "path": "crates/spt-daemon/src/deadline.rs",
2026-06-22T02:37:07.3644654Z               "line": 358
2026-06-22T02:37:07.3644749Z             },
2026-06-22T02:37:07.3644851Z             {
2026-06-22T02:37:07.3644988Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3645097Z               "line": 758
2026-06-22T02:37:07.3645199Z             },
2026-06-22T02:37:07.3645303Z             {
2026-06-22T02:37:07.3645446Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3645557Z               "line": 794
2026-06-22T02:37:07.3645655Z             },
2026-06-22T02:37:07.3645757Z             {
2026-06-22T02:37:07.3645890Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.3646003Z               "line": 966
2026-06-22T02:37:07.3646103Z             },
2026-06-22T02:37:07.3646207Z             {
2026-06-22T02:37:07.3646343Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:37:07.3646449Z               "line": 145
2026-06-22T02:37:07.3646544Z             },
2026-06-22T02:37:07.3646644Z             {
2026-06-22T02:37:07.3646793Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:37:07.3646898Z               "line": 224
2026-06-22T02:37:07.3646992Z             },
2026-06-22T02:37:07.3647093Z             {
2026-06-22T02:37:07.3647222Z               "path": "crates/spt-daemon/tests/resume.rs",
2026-06-22T02:37:07.3647335Z               "line": 293
2026-06-22T02:37:07.3647436Z             },
2026-06-22T02:37:07.3647540Z             {
2026-06-22T02:37:07.3647684Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T02:37:07.3647780Z               "line": 17
2026-06-22T02:37:07.3647888Z             },
2026-06-22T02:37:07.3647984Z             {
2026-06-22T02:37:07.3648124Z               "path": "crates/spt/tests/brain_split.rs",
2026-06-22T02:37:07.3648304Z               "line": 104
2026-06-22T02:37:07.3648395Z             }
2026-06-22T02:37:07.3648499Z           ]
2026-06-22T02:37:07.3648598Z         }
2026-06-22T02:37:07.3648698Z       }
2026-06-22T02:37:07.3648793Z     },
2026-06-22T02:37:07.3648891Z     {
2026-06-22T02:37:07.3649107Z       "id": "REQ-HAZARD-BROKER-QUIC-DEADLINE",
2026-06-22T02:37:07.3652123Z       "title": "The broker bounds every brain-waiting QUIC op (dial / open_stream / send_stream) so a black-holed or dead peer fails PROMPTLY with an ORDINARY error the broker REPLIES, never an unbounded await. The bound (< the brain's 30s PUMP_PEER_IO_TIMEOUT so the BROKER fires first) surfaces to the pump as a normal broker error reply → peer_outcome's non-TimedOut arm → drop conn + redial next tick, the round CONTINUES and the heartbeat keeps advancing — it must NEVER manifest as the brain's own read-deadline (the A-half poison → supervised-restart path REQ-HAZARD-PUMP-IPC-DEADLINE guards). Exactly-once is preserved: a timed-out journaled op fails INSIDE its apply_once closure so no phantom conn_id/stream_id is recorded and a fresh tick re-dials cleanly. The happy path is unchanged (a live peer completes with zero added latency; the bound only bites a non-responsive peer). This is the ROOT-cause cure for the 2.2h hfenduleam pump wedge — a dead roster peer whose QUIC path the broker awaited unbounded — recurring on hfenduleam 2026-06-16.",
2026-06-22T02:37:07.3652385Z       "requiredStages": [
2026-06-22T02:37:07.3652491Z         "doc",
2026-06-22T02:37:07.3652586Z         "impl",
2026-06-22T02:37:07.3652696Z         "unit",
2026-06-22T02:37:07.3652795Z         "int"
2026-06-22T02:37:07.3652906Z       ],
2026-06-22T02:37:07.3653010Z       "stages": {
2026-06-22T02:37:07.3653120Z         "doc": {
2026-06-22T02:37:07.3653235Z           "complete": true,
2026-06-22T02:37:07.3653348Z           "evidence": [
2026-06-22T02:37:07.3653449Z             {
2026-06-22T02:37:07.3653583Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3653696Z               "line": 388
2026-06-22T02:37:07.3653796Z             }
2026-06-22T02:37:07.3653895Z           ]
2026-06-22T02:37:07.3653999Z         },
2026-06-22T02:37:07.3654103Z         "impl": {
2026-06-22T02:37:07.3654209Z           "complete": true,
2026-06-22T02:37:07.3654314Z           "evidence": [
2026-06-22T02:37:07.3654418Z             {
2026-06-22T02:37:07.3654562Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3654666Z               "line": 773
2026-06-22T02:37:07.3654777Z             },
2026-06-22T02:37:07.3654867Z             {
2026-06-22T02:37:07.3655009Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3655120Z               "line": 796
2026-06-22T02:37:07.3655224Z             }
2026-06-22T02:37:07.3655324Z           ]
2026-06-22T02:37:07.3655430Z         },
2026-06-22T02:37:07.3655534Z         "int": {
2026-06-22T02:37:07.3655643Z           "complete": true,
2026-06-22T02:37:07.3655759Z           "evidence": [
2026-06-22T02:37:07.3655858Z             {
2026-06-22T02:37:07.3656007Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:37:07.3656107Z               "line": 228
2026-06-22T02:37:07.3656215Z             },
2026-06-22T02:37:07.3656322Z             {
2026-06-22T02:37:07.3656464Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:37:07.3656563Z               "line": 468
2026-06-22T02:37:07.3656663Z             }
2026-06-22T02:37:07.3656763Z           ]
2026-06-22T02:37:07.3656866Z         },
2026-06-22T02:37:07.3656970Z         "unit": {
2026-06-22T02:37:07.3657077Z           "complete": true,
2026-06-22T02:37:07.3657181Z           "evidence": [
2026-06-22T02:37:07.3657281Z             {
2026-06-22T02:37:07.3657420Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.3657533Z               "line": 1495
2026-06-22T02:37:07.3657639Z             }
2026-06-22T02:37:07.3657734Z           ]
2026-06-22T02:37:07.3657838Z         }
2026-06-22T02:37:07.3658058Z       }
2026-06-22T02:37:07.3658163Z     },
2026-06-22T02:37:07.3658258Z     {
2026-06-22T02:37:07.3658406Z       "id": "REQ-HAZARD-BROKER-SEED-WIRE-SKEW",
2026-06-22T02:37:07.3662035Z       "title": "A daemon-state wire-format change (e.g. the v0.9.0 adapter-agnostic Seed) does NOT take effect until a DELIBERATE full broker restart: the broker serves the seed-control channel and is RESIDENT across a brain-only self-update (ADR-0004 no-terminate-during-update forbids auto-killing it), so a NEW-version CLI talking to a still-resident OLD broker fails the seed handshake — the old broker cannot deserialize the new Seed (its formerly-required `adapter` field is gone) and drops the conn without an ack, which surfaces to the CLI as a raw UnexpectedEof 'failed to fill whole buffer'. spt-core must (a) surface an ACTIONABLE diagnostic on that seed-ack EOF (name the stale-broker cause + the `spt daemon stop` fix — the broker restarts on the next api call), never the cryptic io error; and (b) document the operational rule (a deliberate broker restart is required on any daemon-state wire change — NOT automatic) + the FORWARD discipline (daemon-state/Seed schema changes stay additive + serde-default so a resident OLD broker tolerates a NEW CLI across a brain-only update; note this would NOT have rescued 0.9.0 itself, since the old broker's `adapter` was a required field). perri PREP-4 FINDING 1 (v0.9.0 CLI vs stale 0.8.x broker).",
2026-06-22T02:37:07.3662297Z       "requiredStages": [
2026-06-22T02:37:07.3662387Z         "doc",
2026-06-22T02:37:07.3662498Z         "impl",
2026-06-22T02:37:07.3662598Z         "unit"
2026-06-22T02:37:07.3662702Z       ],
2026-06-22T02:37:07.3662818Z       "stages": {
2026-06-22T02:37:07.3662918Z         "doc": {
2026-06-22T02:37:07.3663026Z           "complete": true,
2026-06-22T02:37:07.3663133Z           "evidence": [
2026-06-22T02:37:07.3663237Z             {
2026-06-22T02:37:07.3663360Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3663480Z               "line": 395
2026-06-22T02:37:07.3663575Z             }
2026-06-22T02:37:07.3663670Z           ]
2026-06-22T02:37:07.3663772Z         },
2026-06-22T02:37:07.3663875Z         "impl": {
2026-06-22T02:37:07.3663990Z           "complete": true,
2026-06-22T02:37:07.3664096Z           "evidence": [
2026-06-22T02:37:07.3664194Z             {
2026-06-22T02:37:07.3664322Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3664437Z               "line": 75
2026-06-22T02:37:07.3664545Z             }
2026-06-22T02:37:07.3664644Z           ]
2026-06-22T02:37:07.3664750Z         },
2026-06-22T02:37:07.3664854Z         "int": {
2026-06-22T02:37:07.3664983Z           "complete": false,
2026-06-22T02:37:07.3665094Z           "evidence": []
2026-06-22T02:37:07.3665197Z         },
2026-06-22T02:37:07.3665303Z         "unit": {
2026-06-22T02:37:07.3665413Z           "complete": true,
2026-06-22T02:37:07.3665522Z           "evidence": [
2026-06-22T02:37:07.3665618Z             {
2026-06-22T02:37:07.3665766Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3665875Z               "line": 632
2026-06-22T02:37:07.3665971Z             }
2026-06-22T02:37:07.3666075Z           ]
2026-06-22T02:37:07.3666175Z         }
2026-06-22T02:37:07.3666281Z       }
2026-06-22T02:37:07.3666380Z     },
2026-06-22T02:37:07.3666485Z     {
2026-06-22T02:37:07.3666615Z       "id": "REQ-HAZARD-CASCADE-WIPE-GUARD",
2026-06-22T02:37:07.3666814Z       "title": "No hard-delete of a parent hosting non-empty children (6.3)",
2026-06-22T02:37:07.3666925Z       "requiredStages": [
2026-06-22T02:37:07.3667015Z         "impl",
2026-06-22T02:37:07.3667123Z         "unit"
2026-06-22T02:37:07.3667218Z       ],
2026-06-22T02:37:07.3667323Z       "stages": {
2026-06-22T02:37:07.3667431Z         "doc": {
2026-06-22T02:37:07.3667545Z           "complete": false,
2026-06-22T02:37:07.3667651Z           "evidence": []
2026-06-22T02:37:07.3667755Z         },
2026-06-22T02:37:07.3667864Z         "impl": {
2026-06-22T02:37:07.3668069Z           "complete": true,
2026-06-22T02:37:07.3668179Z           "evidence": [
2026-06-22T02:37:07.3668280Z             {
2026-06-22T02:37:07.3668427Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.3668528Z               "line": 172
2026-06-22T02:37:07.3668623Z             },
2026-06-22T02:37:07.3668723Z             {
2026-06-22T02:37:07.3668858Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.3669033Z               "line": 18
2026-06-22T02:37:07.3669138Z             },
2026-06-22T02:37:07.3669234Z             {
2026-06-22T02:37:07.3669367Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.3669577Z               "line": 100
2026-06-22T02:37:07.3669675Z             }
2026-06-22T02:37:07.3669770Z           ]
2026-06-22T02:37:07.3669871Z         },
2026-06-22T02:37:07.3669964Z         "int": {
2026-06-22T02:37:07.3670078Z           "complete": false,
2026-06-22T02:37:07.3670184Z           "evidence": []
2026-06-22T02:37:07.3670289Z         },
2026-06-22T02:37:07.3670393Z         "unit": {
2026-06-22T02:37:07.3670504Z           "complete": true,
2026-06-22T02:37:07.3670618Z           "evidence": [
2026-06-22T02:37:07.3670722Z             {
2026-06-22T02:37:07.3670866Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.3670965Z               "line": 857
2026-06-22T02:37:07.3671056Z             },
2026-06-22T02:37:07.3671161Z             {
2026-06-22T02:37:07.3671294Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.3671405Z               "line": 161
2026-06-22T02:37:07.3671514Z             },
2026-06-22T02:37:07.3671609Z             {
2026-06-22T02:37:07.3671743Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.3671848Z               "line": 233
2026-06-22T02:37:07.3671957Z             }
2026-06-22T02:37:07.3672054Z           ]
2026-06-22T02:37:07.3672158Z         }
2026-06-22T02:37:07.3672262Z       }
2026-06-22T02:37:07.3672354Z     },
2026-06-22T02:37:07.3672463Z     {
2026-06-22T02:37:07.3672590Z       "id": "REQ-HAZARD-CHILD-CONSOLE-FLASH",
2026-06-22T02:37:07.3673039Z       "title": "Console-subsystem children of the console-less daemon spawn with CREATE_NO_WINDOW, or each spawn flashes a visible blank window on the user's desktop (5.8)",
2026-06-22T02:37:07.3673145Z       "requiredStages": [
2026-06-22T02:37:07.3673243Z         "impl",
2026-06-22T02:37:07.3673349Z         "unit"
2026-06-22T02:37:07.3673434Z       ],
2026-06-22T02:37:07.3673534Z       "stages": {
2026-06-22T02:37:07.3673630Z         "doc": {
2026-06-22T02:37:07.3673749Z           "complete": true,
2026-06-22T02:37:07.3673849Z           "evidence": [
2026-06-22T02:37:07.3673960Z             {
2026-06-22T02:37:07.3674092Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3674197Z               "line": 220
2026-06-22T02:37:07.3674294Z             }
2026-06-22T02:37:07.3674393Z           ]
2026-06-22T02:37:07.3674488Z         },
2026-06-22T02:37:07.3674594Z         "impl": {
2026-06-22T02:37:07.3674708Z           "complete": true,
2026-06-22T02:37:07.3674821Z           "evidence": [
2026-06-22T02:37:07.3674912Z             {
2026-06-22T02:37:07.3675053Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.3675162Z               "line": 316
2026-06-22T02:37:07.3675267Z             },
2026-06-22T02:37:07.3675368Z             {
2026-06-22T02:37:07.3675514Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.3675620Z               "line": 356
2026-06-22T02:37:07.3675720Z             },
2026-06-22T02:37:07.3675824Z             {
2026-06-22T02:37:07.3675968Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.3676086Z               "line": 578
2026-06-22T02:37:07.3676178Z             },
2026-06-22T02:37:07.3676273Z             {
2026-06-22T02:37:07.3676411Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:37:07.3676507Z               "line": 77
2026-06-22T02:37:07.3676721Z             }
2026-06-22T02:37:07.3676822Z           ]
2026-06-22T02:37:07.3676922Z         },
2026-06-22T02:37:07.3677026Z         "int": {
2026-06-22T02:37:07.3677142Z           "complete": false,
2026-06-22T02:37:07.3677255Z           "evidence": []
2026-06-22T02:37:07.3677350Z         },
2026-06-22T02:37:07.3677457Z         "unit": {
2026-06-22T02:37:07.3677561Z           "complete": true,
2026-06-22T02:37:07.3677669Z           "evidence": [
2026-06-22T02:37:07.3677769Z             {
2026-06-22T02:37:07.3677915Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.3678024Z               "line": 747
2026-06-22T02:37:07.3678124Z             },
2026-06-22T02:37:07.3678301Z             {
2026-06-22T02:37:07.3678439Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.3678544Z               "line": 785
2026-06-22T02:37:07.3678639Z             },
2026-06-22T02:37:07.3678744Z             {
2026-06-22T02:37:07.3678893Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:37:07.3679069Z               "line": 166
2026-06-22T02:37:07.3679174Z             }
2026-06-22T02:37:07.3679273Z           ]
2026-06-22T02:37:07.3679374Z         }
2026-06-22T02:37:07.3679465Z       }
2026-06-22T02:37:07.3679564Z     },
2026-06-22T02:37:07.3679669Z     {
2026-06-22T02:37:07.3679808Z       "id": "REQ-HAZARD-CONFLICT-BOTH-PRESERVED",
2026-06-22T02:37:07.3680389Z       "title": "A surfaced concurrent context pair is durably preserved (both versions, tracked artifacts) until a strictly dominating write clears it; no reconcile failure path discards an unmerged version (6.6, ADR-0013)",
2026-06-22T02:37:07.3680496Z       "requiredStages": [
2026-06-22T02:37:07.3680600Z         "impl",
2026-06-22T02:37:07.3680701Z         "unit"
2026-06-22T02:37:07.3680802Z       ],
2026-06-22T02:37:07.3680914Z       "stages": {
2026-06-22T02:37:07.3681016Z         "doc": {
2026-06-22T02:37:07.3681130Z           "complete": false,
2026-06-22T02:37:07.3681239Z           "evidence": []
2026-06-22T02:37:07.3681350Z         },
2026-06-22T02:37:07.3681454Z         "impl": {
2026-06-22T02:37:07.3681563Z           "complete": true,
2026-06-22T02:37:07.3681674Z           "evidence": [
2026-06-22T02:37:07.3681769Z             {
2026-06-22T02:37:07.3681921Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:37:07.3682022Z               "line": 22
2026-06-22T02:37:07.3682127Z             },
2026-06-22T02:37:07.3682231Z             {
2026-06-22T02:37:07.3682365Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.3682470Z               "line": 487
2026-06-22T02:37:07.3682570Z             },
2026-06-22T02:37:07.3682676Z             {
2026-06-22T02:37:07.3682818Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:37:07.3682929Z               "line": 17
2026-06-22T02:37:07.3683023Z             },
2026-06-22T02:37:07.3683122Z             {
2026-06-22T02:37:07.3683251Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:37:07.3683357Z               "line": 147
2026-06-22T02:37:07.3683465Z             },
2026-06-22T02:37:07.3683561Z             {
2026-06-22T02:37:07.3683719Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.3683822Z               "line": 226
2026-06-22T02:37:07.3683924Z             },
2026-06-22T02:37:07.3684024Z             {
2026-06-22T02:37:07.3684171Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.3684281Z               "line": 251
2026-06-22T02:37:07.3684386Z             },
2026-06-22T02:37:07.3684485Z             {
2026-06-22T02:37:07.3684634Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.3684743Z               "line": 277
2026-06-22T02:37:07.3684849Z             },
2026-06-22T02:37:07.3684949Z             {
2026-06-22T02:37:07.3685096Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.3685207Z               "line": 124
2026-06-22T02:37:07.3685315Z             },
2026-06-22T02:37:07.3685534Z             {
2026-06-22T02:37:07.3685674Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.3685784Z               "line": 224
2026-06-22T02:37:07.3685885Z             }
2026-06-22T02:37:07.3685984Z           ]
2026-06-22T02:37:07.3686094Z         },
2026-06-22T02:37:07.3686195Z         "int": {
2026-06-22T02:37:07.3686313Z           "complete": false,
2026-06-22T02:37:07.3686413Z           "evidence": []
2026-06-22T02:37:07.3686510Z         },
2026-06-22T02:37:07.3686614Z         "unit": {
2026-06-22T02:37:07.3686713Z           "complete": true,
2026-06-22T02:37:07.3686824Z           "evidence": [
2026-06-22T02:37:07.3687028Z             {
2026-06-22T02:37:07.3687176Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:37:07.3687281Z               "line": 63
2026-06-22T02:37:07.3687382Z             },
2026-06-22T02:37:07.3687487Z             {
2026-06-22T02:37:07.3687634Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:37:07.3687740Z               "line": 73
2026-06-22T02:37:07.3687843Z             },
2026-06-22T02:37:07.3687949Z             {
2026-06-22T02:37:07.3688079Z               "path": "crates/spt-daemon/src/reconcile.rs",
2026-06-22T02:37:07.3688186Z               "line": 85
2026-06-22T02:37:07.3688286Z             },
2026-06-22T02:37:07.3688391Z             {
2026-06-22T02:37:07.3688537Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:37:07.3688636Z               "line": 346
2026-06-22T02:37:07.3688742Z             },
2026-06-22T02:37:07.3688842Z             {
2026-06-22T02:37:07.3689071Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:37:07.3689185Z               "line": 281
2026-06-22T02:37:07.3689290Z             },
2026-06-22T02:37:07.3689395Z             {
2026-06-22T02:37:07.3689538Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:37:07.3689638Z               "line": 322
2026-06-22T02:37:07.3689743Z             },
2026-06-22T02:37:07.3689853Z             {
2026-06-22T02:37:07.3689978Z               "path": "crates/spt-live/src/reconcile.rs",
2026-06-22T02:37:07.3690086Z               "line": 360
2026-06-22T02:37:07.3690196Z             },
2026-06-22T02:37:07.3690293Z             {
2026-06-22T02:37:07.3690448Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.3690554Z               "line": 688
2026-06-22T02:37:07.3690650Z             },
2026-06-22T02:37:07.3690749Z             {
2026-06-22T02:37:07.3690896Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.3693621Z               "line": 397
2026-06-22T02:37:07.3693744Z             },
2026-06-22T02:37:07.3693864Z             {
2026-06-22T02:37:07.3694020Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.3694131Z               "line": 440
2026-06-22T02:37:07.3694231Z             }
2026-06-22T02:37:07.3694340Z           ]
2026-06-22T02:37:07.3694441Z         }
2026-06-22T02:37:07.3694541Z       }
2026-06-22T02:37:07.3694640Z     },
2026-06-22T02:37:07.3694731Z     {
2026-06-22T02:37:07.3694860Z       "id": "REQ-HAZARD-CONPTY-DSR",
2026-06-22T02:37:07.3695104Z       "title": "ConPTY reader must auto-answer DSR (ESC[6n) or all child output stalls (5.5)",
2026-06-22T02:37:07.3695227Z       "requiredStages": [
2026-06-22T02:37:07.3695336Z         "impl",
2026-06-22T02:37:07.3695438Z         "unit"
2026-06-22T02:37:07.3695537Z       ],
2026-06-22T02:37:07.3695636Z       "stages": {
2026-06-22T02:37:07.3695743Z         "doc": {
2026-06-22T02:37:07.3695851Z           "complete": false,
2026-06-22T02:37:07.3695960Z           "evidence": []
2026-06-22T02:37:07.3696060Z         },
2026-06-22T02:37:07.3696169Z         "impl": {
2026-06-22T02:37:07.3696282Z           "complete": true,
2026-06-22T02:37:07.3696387Z           "evidence": [
2026-06-22T02:37:07.3696484Z             {
2026-06-22T02:37:07.3696625Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:37:07.3696731Z               "line": 169
2026-06-22T02:37:07.3696973Z             }
2026-06-22T02:37:07.3697070Z           ]
2026-06-22T02:37:07.3697174Z         },
2026-06-22T02:37:07.3697274Z         "int": {
2026-06-22T02:37:07.3697389Z           "complete": true,
2026-06-22T02:37:07.3697512Z           "evidence": [
2026-06-22T02:37:07.3697607Z             {
2026-06-22T02:37:07.3697746Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T02:37:07.3697846Z               "line": 44
2026-06-22T02:37:07.3697947Z             },
2026-06-22T02:37:07.3698047Z             {
2026-06-22T02:37:07.3698175Z               "path": "crates/spt-term/tests/dsr.rs",
2026-06-22T02:37:07.3698267Z               "line": 66
2026-06-22T02:37:07.3698466Z             }
2026-06-22T02:37:07.3698572Z           ]
2026-06-22T02:37:07.3698668Z         },
2026-06-22T02:37:07.3698780Z         "unit": {
2026-06-22T02:37:07.3698889Z           "complete": true,
2026-06-22T02:37:07.3699078Z           "evidence": [
2026-06-22T02:37:07.3699177Z             {
2026-06-22T02:37:07.3699326Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:37:07.3699440Z               "line": 186
2026-06-22T02:37:07.3699540Z             },
2026-06-22T02:37:07.3699646Z             {
2026-06-22T02:37:07.3699778Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:37:07.3699889Z               "line": 238
2026-06-22T02:37:07.3699989Z             },
2026-06-22T02:37:07.3700093Z             {
2026-06-22T02:37:07.3700223Z               "path": "crates/spt-term/src/reader.rs",
2026-06-22T02:37:07.3700332Z               "line": 266
2026-06-22T02:37:07.3700432Z             }
2026-06-22T02:37:07.3700528Z           ]
2026-06-22T02:37:07.3700637Z         }
2026-06-22T02:37:07.3700737Z       }
2026-06-22T02:37:07.3700838Z     },
2026-06-22T02:37:07.3700942Z     {
2026-06-22T02:37:07.3701076Z       "id": "REQ-HAZARD-CONTROLLER-GAP-RESUME",
2026-06-22T02:37:07.3707466Z       "title": "A serving CONTROLLER whose serve-brain hits a b4 drop-don't-block FORWARD output gap must RESUME-FROM-FLOOR (re-subscribe from delivered_through and re-fetch the dropped frames from the ring), NOT snap-above and NOT fatal. ROOT (v0.13.0 forkpty re-run, post-keystone): b4 made the controller a non-blocking try_send that DROPS frames when its bounded channel fills (a controller that falls behind its OWN echo under a hard flood), so the next read is a forward gap the strict reject-gap (brain.rs:624/628, B2 exactly-once) FATALS — wedged_viewer_does_not_stall_controller (attach.rs:1048) drove ctrl.read_event() raw and fataled on `output gap got 6134 want 4643`. Pre-b4 the inline sleep-poll BLOCKED the drain to the controller's rate (no drops, no gaps); this is a b4 SIDE-EFFECT, not a new class. A controller CANNOT snap (it is authoritative — advances delivered_through; skipping rolled frames = not-exactly-once = B2 violation), so REQ-HAZARD-VIEWER-RING-ROLL-SNAP does NOT apply. B2 INVARIANT (doyle, broker.rs:327-330): the ring trim is delivered_through-BLIND (`while ring.len() > cap_chunks { pop_front() }`), so re-fetch is exactly-once IFF tail - delivered_through <= cap_chunks (4096) — NOT guaranteed in general, but the common case (burst < ring; wedged_viewer ~1492 < 4096) holds. FIX: serve_attach catches the output-gap on the controller path (does not ?-propagate) and re-subscribes from Brain::controller_resume_floor (= delivered_through = the gap's `want`; NO mid-stream KIND_SESSIONS round-trip — sessions() loops on read_event and would re-fatal on the same gap + discard Output); the broker replays the dropped frames. The IRRECOVERABLE edge (floor unchanged across two resumes = ring rolled past delivered_through = frames gone) surfaces a MARKED truncation to the operator (never silent-skip = B2 lie, never spin) and ends cleanly — full graceful handling deferred to REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND. Do NOT make the ring trim delivered_through-aware (that risks an unbounded ring under a stuck controller; the 5s eviction + 4096 ring is the practical bound). (v0.13.0)",
2026-06-22T02:37:07.3707658Z       "requiredStages": [
2026-06-22T02:37:07.3707868Z         "impl",
2026-06-22T02:37:07.3707973Z         "unit",
2026-06-22T02:37:07.3708077Z         "int"
2026-06-22T02:37:07.3708177Z       ],
2026-06-22T02:37:07.3708278Z       "stages": {
2026-06-22T02:37:07.3708383Z         "doc": {
2026-06-22T02:37:07.3708502Z           "complete": false,
2026-06-22T02:37:07.3708612Z           "evidence": []
2026-06-22T02:37:07.3708707Z         },
2026-06-22T02:37:07.3708812Z         "impl": {
2026-06-22T02:37:07.3708918Z           "complete": true,
2026-06-22T02:37:07.3709108Z           "evidence": [
2026-06-22T02:37:07.3709204Z             {
2026-06-22T02:37:07.3709344Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.3709554Z               "line": 109
2026-06-22T02:37:07.3709652Z             },
2026-06-22T02:37:07.3709756Z             {
2026-06-22T02:37:07.3709901Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.3710000Z               "line": 156
2026-06-22T02:37:07.3710110Z             },
2026-06-22T02:37:07.3710210Z             {
2026-06-22T02:37:07.3710348Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.3710449Z               "line": 261
2026-06-22T02:37:07.3710553Z             },
2026-06-22T02:37:07.3710653Z             {
2026-06-22T02:37:07.3710793Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3710892Z               "line": 954
2026-06-22T02:37:07.3710997Z             }
2026-06-22T02:37:07.3711098Z           ]
2026-06-22T02:37:07.3711197Z         },
2026-06-22T02:37:07.3711297Z         "int": {
2026-06-22T02:37:07.3711408Z           "complete": true,
2026-06-22T02:37:07.3711516Z           "evidence": [
2026-06-22T02:37:07.3711612Z             {
2026-06-22T02:37:07.3711742Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.3711850Z               "line": 1051
2026-06-22T02:37:07.3711959Z             }
2026-06-22T02:37:07.3712059Z           ]
2026-06-22T02:37:07.3712153Z         },
2026-06-22T02:37:07.3712262Z         "unit": {
2026-06-22T02:37:07.3712366Z           "complete": true,
2026-06-22T02:37:07.3712478Z           "evidence": [
2026-06-22T02:37:07.3712576Z             {
2026-06-22T02:37:07.3712711Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3712811Z               "line": 1498
2026-06-22T02:37:07.3712900Z             }
2026-06-22T02:37:07.3713001Z           ]
2026-06-22T02:37:07.3713101Z         }
2026-06-22T02:37:07.3713205Z       }
2026-06-22T02:37:07.3713302Z     },
2026-06-22T02:37:07.3713402Z     {
2026-06-22T02:37:07.3713573Z       "id": "REQ-HAZARD-CONTROLLER-IRRECOVERABLE-BEHIND",
2026-06-22T02:37:07.3716400Z       "title": "DEFERRED EDGE of REQ-HAZARD-CONTROLLER-GAP-RESUME: when a serving controller falls behind the live ring FURTHER than the ring holds (tail - delivered_through > cap_chunks, the ring trim being delivered_through-blind, broker.rs:327-330), the dropped frames have rolled OUT of the ring and an exactly-once re-fetch is IMPOSSIBLE. v0.13.0 DETECTS this (resume floor unchanged across two consecutive resumes) and surfaces a MARKED truncation notice to the operator then ends the attach cleanly — it never silent-skips (a B2 lie) and never spins. FULL graceful handling (a clearly-marked snap-with-data-loss that keeps the operator on the live tail, or a structured truncation record the rc renders distinctly, plus the controller-too-slow + ring-too-small backpressure/sizing policy) is DEFERRED — staging it needs a netsplit / deep-behind harness (the in-process loopback rig keeps up; wedged_viewer's gap is recoverable at ~1492 < 4096). (v0.13.0+)",
2026-06-22T02:37:07.3716539Z       "requiredStages": [],
2026-06-22T02:37:07.3716652Z       "stages": {
2026-06-22T02:37:07.3716748Z         "doc": {
2026-06-22T02:37:07.3716859Z           "complete": false,
2026-06-22T02:37:07.3716962Z           "evidence": []
2026-06-22T02:37:07.3717061Z         },
2026-06-22T02:37:07.3717176Z         "impl": {
2026-06-22T02:37:07.3717280Z           "complete": false,
2026-06-22T02:37:07.3717488Z           "evidence": []
2026-06-22T02:37:07.3717589Z         },
2026-06-22T02:37:07.3717693Z         "int": {
2026-06-22T02:37:07.3717803Z           "complete": false,
2026-06-22T02:37:07.3717913Z           "evidence": []
2026-06-22T02:37:07.3718013Z         },
2026-06-22T02:37:07.3718108Z         "unit": {
2026-06-22T02:37:07.3718209Z           "complete": false,
2026-06-22T02:37:07.3718308Z           "evidence": []
2026-06-22T02:37:07.3718413Z         }
2026-06-22T02:37:07.3718509Z       }
2026-06-22T02:37:07.3718609Z     },
2026-06-22T02:37:07.3718714Z     {
2026-06-22T02:37:07.3718848Z       "id": "REQ-HAZARD-CONTROLLER-RETAKE-FLOOR",
2026-06-22T02:37:07.3723184Z       "title": "`become_controller` should STRUCTURALLY refuse a controller re-take whose `from_seq` falls below the connection's already-delivered contiguous floor — making the P1c reorder invariant un-reintroducible by a future caller, not just removed at the one caller. ROOT/SCOPE (doyle proposed, P1c gate dialogue): P1c fixes REQ-HAZARD-CONTROLLER-WRITER-REORDER three ways (handoff single-take + epoch-gate-under-lock + session_cursors seed), removing the one decreasing-floor double-take and bounding any other to already-committed-only. A self-enforcing broker guard would refuse the bad SHAPE outright. BLOCKER: the obvious predicate (`from_seq >= delivered_through`) is UNSAFE because `delivered_through` is SESSION-WIDE (the `Arc<AtomicU64>` on `OutputLog`, shared by all controllers/viewers, advanced monotonic-MAX; `resume_seq` reads it) — a normal fresh-operator `from_seq=0` attach to a producing session legitimately sits below it (full ring replay + consumer dedup-below/snap-above), and monotonic-MAX can't distinguish the hazard (a `seq1`-without-`seq0` write reads as `2`). The structurally-correct guard needs a NEW per-connection contiguous-sent cursor (the true highest-contiguous seq this socket has received) that does not exist today; the guard then refuses a re-take below THAT. Bigger than P1c; no live gap (P1c fully fixes the actual bug). Mint/refine stages when the per-connection cursor is built. (v0.13.0 follow-up, post-ship)",
2026-06-22T02:37:07.3723361Z       "requiredStages": [],
2026-06-22T02:37:07.3723470Z       "stages": {
2026-06-22T02:37:07.3723571Z         "doc": {
2026-06-22T02:37:07.3723676Z           "complete": false,
2026-06-22T02:37:07.3723775Z           "evidence": []
2026-06-22T02:37:07.3723881Z         },
2026-06-22T02:37:07.3723981Z         "impl": {
2026-06-22T02:37:07.3724090Z           "complete": false,
2026-06-22T02:37:07.3724191Z           "evidence": []
2026-06-22T02:37:07.3724291Z         },
2026-06-22T02:37:07.3724391Z         "int": {
2026-06-22T02:37:07.3724501Z           "complete": false,
2026-06-22T02:37:07.3724615Z           "evidence": []
2026-06-22T02:37:07.3724715Z         },
2026-06-22T02:37:07.3724811Z         "unit": {
2026-06-22T02:37:07.3724925Z           "complete": false,
2026-06-22T02:37:07.3725025Z           "evidence": []
2026-06-22T02:37:07.3725131Z         }
2026-06-22T02:37:07.3725227Z       }
2026-06-22T02:37:07.3725329Z     },
2026-06-22T02:37:07.3725428Z     {
2026-06-22T02:37:07.3725588Z       "id": "REQ-HAZARD-CONTROLLER-WRITER-REORDER",
2026-06-22T02:37:07.3739043Z       "title": "Two `controller_writer` threads must never race ONE brain↔broker connection's socket. ROOT (doyle, instrumented RACEDIAG repro on kitsubito): on a brain-restart re-serve the handoff brain registers as controller on the SAME session TWICE over the SAME `Brain::conn` socket — (1) `Brain::handoff` eagerly `subscribe(prior.session_id, prior.next_seq=1)` → `become_controller(from_seq=1)`, initial=[1], spawns writer-A (writes seq 1); (2) `serve_attach` re-handles the replayed `Request{from_seq:0}` → `attach_as(sid,0)` → `become_controller(from_seq=0)`, initial=[0,1], spawns writer-B (writes 0 then 1). `become_controller` (broker.rs) drops the prior `ControllerSink` (its `tx`) but does NOT stop the prior writer thread — writer-A keeps flushing its owned `initial` batch, and both writers hold clones of the same `SharedSend` (`Arc<Mutex<socket>>`) with NO inter-thread ordering. When writer-A's seq 1 wins the socket before writer-B's seq 0, the strict legacy consumer (brain.rs read_event reject-gap path) sees `output gap: got seq 1 want 0` → the test `attach_survives_target_brain_restart_exactly_once` panics at `.expect(\"re-serve\")` OR HANGS in `render_until` (serve thread died on the gap → MARKER_TWO never reaches the wire). `prior.next_seq` is life1's CONSUMPTION cursor, NOT life2's connection state — life2's socket has been sent NOTHING, so a `from_seq=0` full replay on a connection that already streamed seq 1 is contradictory. Snap-above tolerance ALONE can't fix it (it would dedup-drop the late seq 0 → byte loss → the exactly-once byte-identity assert fails). PRE-EXISTING, surfaced by the v0.13.0 green-both-runners release gate; P1b is INNOCENT (its diff touches only input-ack machinery, proven mechanically + the test passes post-P1b in isolation). Sibling flaky cluster: `inject_control_wedge::g2`, `broker::spawn_env_reaches_child`. INVARIANT: on a single brain↔broker connection the controller output-frame stream is monotonic non-decreasing in seq (modulo dedup re-sends); exactly ONE `controller_writer` is ever live per connection; a SUPERSEDED writer writes NO further frames; a re-serve never replays a seq below what the connection already received. FIX (doyle design, corrected at the gate 2026-06-20): fix #1 as designed ('drop handoff's eager subscribe so serve_attach's attach_as is the sole registration') was REVERTED — handoff's `subscribe(prior.next_seq)` IS the standalone-resume mechanism (the brain-only update engine `apply_brain_only` + the `handoff`/`idempotent`/`daemon_e2e` int tests replay output through it with NO `serve_attach`; dropping it hung every resume-via-handoff test). The shipped fix is three parts: (1) CORRECTNESS — `Brain::handoff` seeds `session_cursors` at `prior.next_seq` so the consumer runs the production dedup-below+snap-above path, never the strict reject-gap legacy trap; this is COMPLETE (not merely tolerant) because every `controller_writer` emits an ASCENDING seq stream and the surviving writer (serve_attach's attach_as(sid,0)) offers the complete `[0,end]` range, so a snap-above merge of ascending writers delivers `[K,end]` with no skip/dup (first sighting of any seq>M is preceded by M on that writer). (2) INVARIANT — `controller_writer`'s INITIAL-BATCH replay is epoch-gated: `controller_epoch` is a shared `Arc<AtomicU64>`, the writer re-reads it UNDER `send.lock()` (atomically with `write_frame`) and returns the instant it is superseded — no check-then-block-then-write window, no superseded replay (W1-safe: never blocks the drain under `Mutex<OutputLog>`). The LIVE loop is NOT gated (new output only flows to the current controller; a superseded writer must still deliver its terminal `Displaced` kick — gating it suppressed the loud-take notice; it ends on `tx`-drop). (3) EXPLICIT-RESUME / OPERATOR-STREAM BOUNDARY (the LOAD-BEARING fix — kitsubito RACEDIAG ~33% repro the keystones missed) — `Brain::subscribe_with` (shared by attach/attach_as) resets the resume-mode dedup cursor to `from_seq`. The handoff eager subscribe makes serve_attach's brain receive the replay's seq K BEFORE the operator Request is processed (`attached`=false); that frame is dropped by the if-attached forward gate but the snap-above cursor already advanced past K, and `attach_as(sid,0)`'s re-subscribe used to leave the cursor advanced → the broker's re-send of seq K arrives below it, deduped, never forwarded → operator viewport forward-gap (silent content loss in the real rc consumer). Resetting to from_seq on the attach_as re-subscribe re-delivers from 0 (operator dedups the overlap) so seq K reaches the viewport. The epoch gate (2) is sound (RACEDIAG: zero socket interleaving above K); cold-start brains (empty map — production dispatch serve) keep the legacy next_seq path, so production is unaffected. (v0.13.0)",
2026-06-22T02:37:07.3739553Z       "requiredStages": [
2026-06-22T02:37:07.3739729Z         "doc",
2026-06-22T02:37:07.3739829Z         "impl",
2026-06-22T02:37:07.3739939Z         "unit",
2026-06-22T02:37:07.3740039Z         "int"
2026-06-22T02:37:07.3740139Z       ],
2026-06-22T02:37:07.3740245Z       "stages": {
2026-06-22T02:37:07.3740349Z         "doc": {
2026-06-22T02:37:07.3740473Z           "complete": true,
2026-06-22T02:37:07.3740579Z           "evidence": [
2026-06-22T02:37:07.3740673Z             {
2026-06-22T02:37:07.3740803Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3740922Z               "line": 468
2026-06-22T02:37:07.3741016Z             }
2026-06-22T02:37:07.3741115Z           ]
2026-06-22T02:37:07.3741295Z         },
2026-06-22T02:37:07.3741403Z         "impl": {
2026-06-22T02:37:07.3741519Z           "complete": true,
2026-06-22T02:37:07.3741624Z           "evidence": [
2026-06-22T02:37:07.3741728Z             {
2026-06-22T02:37:07.3741872Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3741986Z               "line": 348
2026-06-22T02:37:07.3742095Z             },
2026-06-22T02:37:07.3742201Z             {
2026-06-22T02:37:07.3742339Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3742444Z               "line": 1282
2026-06-22T02:37:07.3742549Z             },
2026-06-22T02:37:07.3742658Z             {
2026-06-22T02:37:07.3742807Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3742915Z               "line": 759
2026-06-22T02:37:07.3743020Z             }
2026-06-22T02:37:07.3743121Z           ]
2026-06-22T02:37:07.3743216Z         },
2026-06-22T02:37:07.3743325Z         "int": {
2026-06-22T02:37:07.3743436Z           "complete": true,
2026-06-22T02:37:07.3743545Z           "evidence": [
2026-06-22T02:37:07.3743653Z             {
2026-06-22T02:37:07.3743797Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.3743909Z               "line": 1206
2026-06-22T02:37:07.3744004Z             },
2026-06-22T02:37:07.3744110Z             {
2026-06-22T02:37:07.3744266Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.3744372Z               "line": 1307
2026-06-22T02:37:07.3744476Z             },
2026-06-22T02:37:07.3744576Z             {
2026-06-22T02:37:07.3744715Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.3744825Z               "line": 1169
2026-06-22T02:37:07.3744919Z             }
2026-06-22T02:37:07.3745025Z           ]
2026-06-22T02:37:07.3745129Z         },
2026-06-22T02:37:07.3745229Z         "unit": {
2026-06-22T02:37:07.3745340Z           "complete": true,
2026-06-22T02:37:07.3745449Z           "evidence": [
2026-06-22T02:37:07.3745549Z             {
2026-06-22T02:37:07.3745698Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3745801Z               "line": 2873
2026-06-22T02:37:07.3745907Z             }
2026-06-22T02:37:07.3746013Z           ]
2026-06-22T02:37:07.3746116Z         }
2026-06-22T02:37:07.3746217Z       }
2026-06-22T02:37:07.3746323Z     },
2026-06-22T02:37:07.3746431Z     {
2026-06-22T02:37:07.3746583Z       "id": "REQ-HAZARD-DAEMON-HOSTED-LIVENESS",
2026-06-22T02:37:07.3747031Z       "title": "Daemon-hosted perches (Psyche, spt-hosted Self) derive liveness from the daemon endpoint table + info.json status, never is_process_alive(info.pid) (2.5)",
2026-06-22T02:37:07.3747150Z       "requiredStages": [
2026-06-22T02:37:07.3747246Z         "impl",
2026-06-22T02:37:07.3747355Z         "unit",
2026-06-22T02:37:07.3747445Z         "int"
2026-06-22T02:37:07.3747551Z       ],
2026-06-22T02:37:07.3747665Z       "stages": {
2026-06-22T02:37:07.3747769Z         "doc": {
2026-06-22T02:37:07.3747881Z           "complete": false,
2026-06-22T02:37:07.3747999Z           "evidence": []
2026-06-22T02:37:07.3748108Z         },
2026-06-22T02:37:07.3748210Z         "impl": {
2026-06-22T02:37:07.3748328Z           "complete": true,
2026-06-22T02:37:07.3748428Z           "evidence": [
2026-06-22T02:37:07.3748524Z             {
2026-06-22T02:37:07.3748751Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3748861Z               "line": 178
2026-06-22T02:37:07.3749021Z             },
2026-06-22T02:37:07.3749125Z             {
2026-06-22T02:37:07.3749275Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3749388Z               "line": 226
2026-06-22T02:37:07.3749479Z             },
2026-06-22T02:37:07.3749593Z             {
2026-06-22T02:37:07.3749731Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.3749842Z               "line": 79
2026-06-22T02:37:07.3749946Z             },
2026-06-22T02:37:07.3750046Z             {
2026-06-22T02:37:07.3750284Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.3750384Z               "line": 52
2026-06-22T02:37:07.3750486Z             },
2026-06-22T02:37:07.3750590Z             {
2026-06-22T02:37:07.3750733Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3750843Z               "line": 263
2026-06-22T02:37:07.3750947Z             },
2026-06-22T02:37:07.3751048Z             {
2026-06-22T02:37:07.3751190Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:37:07.3751295Z               "line": 27
2026-06-22T02:37:07.3751391Z             },
2026-06-22T02:37:07.3751491Z             {
2026-06-22T02:37:07.3751628Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:37:07.3751723Z               "line": 79
2026-06-22T02:37:07.3751832Z             },
2026-06-22T02:37:07.3751931Z             {
2026-06-22T02:37:07.3752074Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:37:07.3752179Z               "line": 102
2026-06-22T02:37:07.3752288Z             },
2026-06-22T02:37:07.3752394Z             {
2026-06-22T02:37:07.3752527Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.3752641Z               "line": 116
2026-06-22T02:37:07.3752732Z             }
2026-06-22T02:37:07.3752833Z           ]
2026-06-22T02:37:07.3752941Z         },
2026-06-22T02:37:07.3753043Z         "int": {
2026-06-22T02:37:07.3753152Z           "complete": true,
2026-06-22T02:37:07.3753261Z           "evidence": [
2026-06-22T02:37:07.3753367Z             {
2026-06-22T02:37:07.3753519Z               "path": "crates/spt-daemon/tests/daemon_e2e.rs",
2026-06-22T02:37:07.3753629Z               "line": 43
2026-06-22T02:37:07.3753729Z             }
2026-06-22T02:37:07.3753838Z           ]
2026-06-22T02:37:07.3753939Z         },
2026-06-22T02:37:07.3754034Z         "unit": {
2026-06-22T02:37:07.3754143Z           "complete": true,
2026-06-22T02:37:07.3754252Z           "evidence": [
2026-06-22T02:37:07.3754352Z             {
2026-06-22T02:37:07.3754506Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3754617Z               "line": 678
2026-06-22T02:37:07.3754718Z             },
2026-06-22T02:37:07.3754821Z             {
2026-06-22T02:37:07.3754961Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3755075Z               "line": 495
2026-06-22T02:37:07.3755184Z             },
2026-06-22T02:37:07.3755285Z             {
2026-06-22T02:37:07.3755428Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:37:07.3755528Z               "line": 124
2026-06-22T02:37:07.3755628Z             },
2026-06-22T02:37:07.3755738Z             {
2026-06-22T02:37:07.3755881Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:37:07.3755995Z               "line": 143
2026-06-22T02:37:07.3756100Z             },
2026-06-22T02:37:07.3756206Z             {
2026-06-22T02:37:07.3756352Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:37:07.3756457Z               "line": 160
2026-06-22T02:37:07.3756568Z             },
2026-06-22T02:37:07.3756667Z             {
2026-06-22T02:37:07.3756806Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:37:07.3756907Z               "line": 187
2026-06-22T02:37:07.3757010Z             },
2026-06-22T02:37:07.3757119Z             {
2026-06-22T02:37:07.3757348Z               "path": "crates/spt-store/src/liveness.rs",
2026-06-22T02:37:07.3757457Z               "line": 206
2026-06-22T02:37:07.3757559Z             },
2026-06-22T02:37:07.3757663Z             {
2026-06-22T02:37:07.3757806Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.3757915Z               "line": 229
2026-06-22T02:37:07.3758015Z             }
2026-06-22T02:37:07.3758121Z           ]
2026-06-22T02:37:07.3758216Z         }
2026-06-22T02:37:07.3758321Z       }
2026-06-22T02:37:07.3758421Z     },
2026-06-22T02:37:07.3758527Z     {
2026-06-22T02:37:07.3758678Z       "id": "REQ-HAZARD-DAEMON-SCHED-NONBLOCKING",
2026-06-22T02:37:07.3759516Z       "title": "Per-agent pulse/psyche/echo-commune scheduling must not serialize across agents: each agent's bounded LLM call (echo-commune summarizer, Psyche turn) runs off the shared scheduler so one slow/hung call cannot stall another agent's tick (7.4)",
2026-06-22T02:37:07.3759624Z       "requiredStages": [
2026-06-22T02:37:07.3759733Z         "impl",
2026-06-22T02:37:07.3759835Z         "unit"
2026-06-22T02:37:07.3759938Z       ],
2026-06-22T02:37:07.3760044Z       "stages": {
2026-06-22T02:37:07.3760153Z         "doc": {
2026-06-22T02:37:07.3760267Z           "complete": false,
2026-06-22T02:37:07.3760378Z           "evidence": []
2026-06-22T02:37:07.3760482Z         },
2026-06-22T02:37:07.3760582Z         "impl": {
2026-06-22T02:37:07.3760698Z           "complete": true,
2026-06-22T02:37:07.3760797Z           "evidence": [
2026-06-22T02:37:07.3760901Z             {
2026-06-22T02:37:07.3761046Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3761165Z               "line": 1223
2026-06-22T02:37:07.3761269Z             },
2026-06-22T02:37:07.3761370Z             {
2026-06-22T02:37:07.3761507Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3761613Z               "line": 1449
2026-06-22T02:37:07.3761718Z             }
2026-06-22T02:37:07.3761827Z           ]
2026-06-22T02:37:07.3761928Z         },
2026-06-22T02:37:07.3762024Z         "int": {
2026-06-22T02:37:07.3762141Z           "complete": false,
2026-06-22T02:37:07.3762250Z           "evidence": []
2026-06-22T02:37:07.3762350Z         },
2026-06-22T02:37:07.3762453Z         "unit": {
2026-06-22T02:37:07.3762567Z           "complete": true,
2026-06-22T02:37:07.3762678Z           "evidence": [
2026-06-22T02:37:07.3762777Z             {
2026-06-22T02:37:07.3762935Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:37:07.3763045Z               "line": 161
2026-06-22T02:37:07.3763149Z             }
2026-06-22T02:37:07.3763255Z           ]
2026-06-22T02:37:07.3763350Z         }
2026-06-22T02:37:07.3763459Z       }
2026-06-22T02:37:07.3763555Z     },
2026-06-22T02:37:07.3763659Z     {
2026-06-22T02:37:07.3763802Z       "id": "REQ-HAZARD-DAEMON-STOP-BARRIER",
2026-06-22T02:37:07.3765530Z       "title": "B3: `spt daemon stop` then an immediate `spt daemon start` does NOT race — stop fully completes before it returns. Today request_stop (seedmap.rs:240-255) returns on the KIND_STOPPING ack (sent seedmap.rs:174-176) BEFORE the seed socket unbinds, so a following is_running ping (daemon.rs:375) wins the exit window and start reports ALREADY_RUNNING (operator: daemon stop → STOPPED then start → ALREADY_RUNNING). FIX: unbind/stop-gate the seed socket BEFORE acking KIND_STOPPING, OR request_stop waits for a ping-to-fail before returning. Unit: stop then immediate is_running()==false. (v0.12.0)",
2026-06-22T02:37:07.3765668Z       "requiredStages": [
2026-06-22T02:37:07.3765778Z         "impl",
2026-06-22T02:37:07.3765883Z         "unit"
2026-06-22T02:37:07.3765992Z       ],
2026-06-22T02:37:07.3766102Z       "stages": {
2026-06-22T02:37:07.3766212Z         "doc": {
2026-06-22T02:37:07.3766331Z           "complete": false,
2026-06-22T02:37:07.3766446Z           "evidence": []
2026-06-22T02:37:07.3766555Z         },
2026-06-22T02:37:07.3766655Z         "impl": {
2026-06-22T02:37:07.3766903Z           "complete": true,
2026-06-22T02:37:07.3767003Z           "evidence": [
2026-06-22T02:37:07.3767109Z             {
2026-06-22T02:37:07.3767255Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.3767366Z               "line": 257
2026-06-22T02:37:07.3767472Z             }
2026-06-22T02:37:07.3767565Z           ]
2026-06-22T02:37:07.3767655Z         },
2026-06-22T02:37:07.3767785Z         "int": {
2026-06-22T02:37:07.3767908Z           "complete": false,
2026-06-22T02:37:07.3768037Z           "evidence": []
2026-06-22T02:37:07.3768147Z         },
2026-06-22T02:37:07.3768256Z         "unit": {
2026-06-22T02:37:07.3768357Z           "complete": true,
2026-06-22T02:37:07.3768589Z           "evidence": [
2026-06-22T02:37:07.3768686Z             {
2026-06-22T02:37:07.3768838Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.3769029Z               "line": 360
2026-06-22T02:37:07.3769129Z             }
2026-06-22T02:37:07.3769238Z           ]
2026-06-22T02:37:07.3769354Z         }
2026-06-22T02:37:07.3769462Z       }
2026-06-22T02:37:07.3769562Z     },
2026-06-22T02:37:07.3769669Z     {
2026-06-22T02:37:07.3769805Z       "id": "REQ-HAZARD-DAEMON-STOP-REAP",
2026-06-22T02:37:07.3771596Z       "title": "Breap: `spt daemon stop` REAPS the spt-hosted children it spawned — no orphaned psyche/harness processes. Today a stop leaves ~8 orphaned claude-spt-psyche.exe + spt.exe: Psyches are spawned DETACHED (runtime.rs:342-356, the Child is dropped — 'Detached' ~349) and the livehost stop flag Arc<AtomicBool> is NEVER raised (brainproc.rs:227-230 holds it 'for symmetry'). FIX: on stop, raise the livehost stop flag AND kill the spawned psyche/spt-hosted children — via a Windows job object / Unix process-group so the children die with the daemon (not detached-immortal). Folds with B3 (both the stop path). (v0.12.0)",
2026-06-22T02:37:07.3771734Z       "requiredStages": [
2026-06-22T02:37:07.3771843Z         "impl",
2026-06-22T02:37:07.3771950Z         "unit"
2026-06-22T02:37:07.3772063Z       ],
2026-06-22T02:37:07.3772168Z       "stages": {
2026-06-22T02:37:07.3772269Z         "doc": {
2026-06-22T02:37:07.3772377Z           "complete": false,
2026-06-22T02:37:07.3772493Z           "evidence": []
2026-06-22T02:37:07.3772593Z         },
2026-06-22T02:37:07.3772696Z         "impl": {
2026-06-22T02:37:07.3772810Z           "complete": true,
2026-06-22T02:37:07.3772911Z           "evidence": [
2026-06-22T02:37:07.3773022Z             {
2026-06-22T02:37:07.3773170Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3773281Z               "line": 1018
2026-06-22T02:37:07.3773385Z             },
2026-06-22T02:37:07.3773495Z             {
2026-06-22T02:37:07.3773652Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3773756Z               "line": 283
2026-06-22T02:37:07.3773863Z             },
2026-06-22T02:37:07.3773962Z             {
2026-06-22T02:37:07.3774105Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3774224Z               "line": 316
2026-06-22T02:37:07.3774329Z             },
2026-06-22T02:37:07.3774435Z             {
2026-06-22T02:37:07.3774572Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:37:07.3774687Z               "line": 26
2026-06-22T02:37:07.3774788Z             }
2026-06-22T02:37:07.3774891Z           ]
2026-06-22T02:37:07.3774997Z         },
2026-06-22T02:37:07.3775093Z         "int": {
2026-06-22T02:37:07.3775211Z           "complete": false,
2026-06-22T02:37:07.3775319Z           "evidence": []
2026-06-22T02:37:07.3775425Z         },
2026-06-22T02:37:07.3775523Z         "unit": {
2026-06-22T02:37:07.3775637Z           "complete": true,
2026-06-22T02:37:07.3775737Z           "evidence": [
2026-06-22T02:37:07.3775848Z             {
2026-06-22T02:37:07.3775994Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:37:07.3776105Z               "line": 271
2026-06-22T02:37:07.3776214Z             },
2026-06-22T02:37:07.3776314Z             {
2026-06-22T02:37:07.3776566Z               "path": "crates/spt-daemon/src/reap.rs",
2026-06-22T02:37:07.3776677Z               "line": 348
2026-06-22T02:37:07.3776786Z             }
2026-06-22T02:37:07.3776891Z           ]
2026-06-22T02:37:07.3776996Z         }
2026-06-22T02:37:07.3777106Z       }
2026-06-22T02:37:07.3777206Z     },
2026-06-22T02:37:07.3777311Z     {
2026-06-22T02:37:07.3777430Z       "id": "REQ-HAZARD-DEFERRED-DRAIN",
2026-06-22T02:37:07.3777641Z       "title": "Deferred spool rows excluded from the event-stream drain (1.4)",
2026-06-22T02:37:07.3777754Z       "requiredStages": [
2026-06-22T02:37:07.3777850Z         "impl",
2026-06-22T02:37:07.3777960Z         "unit"
2026-06-22T02:37:07.3778154Z       ],
2026-06-22T02:37:07.3778263Z       "stages": {
2026-06-22T02:37:07.3778374Z         "doc": {
2026-06-22T02:37:07.3778492Z           "complete": false,
2026-06-22T02:37:07.3778607Z           "evidence": []
2026-06-22T02:37:07.3778712Z         },
2026-06-22T02:37:07.3778825Z         "impl": {
2026-06-22T02:37:07.3778922Z           "complete": true,
2026-06-22T02:37:07.3779112Z           "evidence": [
2026-06-22T02:37:07.3779208Z             {
2026-06-22T02:37:07.3779346Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3779450Z               "line": 40
2026-06-22T02:37:07.3779551Z             },
2026-06-22T02:37:07.3779656Z             {
2026-06-22T02:37:07.3779794Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3779905Z               "line": 103
2026-06-22T02:37:07.3780009Z             },
2026-06-22T02:37:07.3780113Z             {
2026-06-22T02:37:07.3780243Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3780361Z               "line": 218
2026-06-22T02:37:07.3780465Z             },
2026-06-22T02:37:07.3780570Z             {
2026-06-22T02:37:07.3780711Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3780815Z               "line": 323
2026-06-22T02:37:07.3780912Z             }
2026-06-22T02:37:07.3781016Z           ]
2026-06-22T02:37:07.3781116Z         },
2026-06-22T02:37:07.3781222Z         "int": {
2026-06-22T02:37:07.3781336Z           "complete": false,
2026-06-22T02:37:07.3781449Z           "evidence": []
2026-06-22T02:37:07.3781551Z         },
2026-06-22T02:37:07.3781660Z         "unit": {
2026-06-22T02:37:07.3781769Z           "complete": true,
2026-06-22T02:37:07.3781875Z           "evidence": [
2026-06-22T02:37:07.3781979Z             {
2026-06-22T02:37:07.3782103Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3782213Z               "line": 361
2026-06-22T02:37:07.3782308Z             },
2026-06-22T02:37:07.3782423Z             {
2026-06-22T02:37:07.3782570Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3782675Z               "line": 433
2026-06-22T02:37:07.3782781Z             },
2026-06-22T02:37:07.3782885Z             {
2026-06-22T02:37:07.3783024Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3783139Z               "line": 496
2026-06-22T02:37:07.3783242Z             },
2026-06-22T02:37:07.3783341Z             {
2026-06-22T02:37:07.3783475Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3783578Z               "line": 517
2026-06-22T02:37:07.3783677Z             }
2026-06-22T02:37:07.3783784Z           ]
2026-06-22T02:37:07.3783883Z         }
2026-06-22T02:37:07.3783978Z       }
2026-06-22T02:37:07.3784080Z     },
2026-06-22T02:37:07.3784184Z     {
2026-06-22T02:37:07.3784321Z       "id": "REQ-HAZARD-DEFERRED-MANIFEST",
2026-06-22T02:37:07.3786627Z       "title": "A pointer-mode (delegated / GhReleaseManaged) adapter whose binary/manifest is not yet extracted is reported with a CLEAR diagnostic, never silently dropped. Today such an adapter reads its manifest LIVE from source_dir (registry.rs manifest_dir ~146/149); a deferred / un-extracted install makes load_manifest fail → registered() (~410, filter_map(.ok())) SILENTLY DROPS the row → downstream ADAPTER_UNRESOLVED + a cryptic os-error-2 on `spt adapter use`. FIX: surface a clear diagnostic at the resolver + at `adapter use` (name the adapter + the deferred/missing-manifest cause + the fix), not a silent filter-drop and not a bare os-error-2; consider an eager manifest copy at register time so host_binaries survive before the binary download completes. doyle Finding A. (post-v0.10.0)",
2026-06-22T02:37:07.3786883Z       "requiredStages": [
2026-06-22T02:37:07.3786989Z         "impl",
2026-06-22T02:37:07.3787089Z         "unit"
2026-06-22T02:37:07.3787193Z       ],
2026-06-22T02:37:07.3787299Z       "stages": {
2026-06-22T02:37:07.3787404Z         "doc": {
2026-06-22T02:37:07.3787522Z           "complete": false,
2026-06-22T02:37:07.3787732Z           "evidence": []
2026-06-22T02:37:07.3787837Z         },
2026-06-22T02:37:07.3787943Z         "impl": {
2026-06-22T02:37:07.3788052Z           "complete": true,
2026-06-22T02:37:07.3788162Z           "evidence": [
2026-06-22T02:37:07.3788267Z             {
2026-06-22T02:37:07.3788429Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.3788540Z               "line": 402
2026-06-22T02:37:07.3788648Z             },
2026-06-22T02:37:07.3788747Z             {
2026-06-22T02:37:07.3788895Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.3789090Z               "line": 446
2026-06-22T02:37:07.3789196Z             }
2026-06-22T02:37:07.3789296Z           ]
2026-06-22T02:37:07.3789395Z         },
2026-06-22T02:37:07.3789502Z         "int": {
2026-06-22T02:37:07.3789611Z           "complete": false,
2026-06-22T02:37:07.3789715Z           "evidence": []
2026-06-22T02:37:07.3789816Z         },
2026-06-22T02:37:07.3789925Z         "unit": {
2026-06-22T02:37:07.3790044Z           "complete": true,
2026-06-22T02:37:07.3790150Z           "evidence": [
2026-06-22T02:37:07.3790249Z             {
2026-06-22T02:37:07.3790392Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.3790503Z               "line": 910
2026-06-22T02:37:07.3790611Z             }
2026-06-22T02:37:07.3790712Z           ]
2026-06-22T02:37:07.3790822Z         }
2026-06-22T02:37:07.3790921Z       }
2026-06-22T02:37:07.3791025Z     },
2026-06-22T02:37:07.3791111Z     {
2026-06-22T02:37:07.3791262Z       "id": "REQ-HAZARD-DEFERRED-SURVIVE-DRAIN",
2026-06-22T02:37:07.3791419Z       "title": "Deferred rows survive poll drain (4.4)",
2026-06-22T02:37:07.3791525Z       "requiredStages": [
2026-06-22T02:37:07.3791633Z         "impl",
2026-06-22T02:37:07.3791739Z         "unit"
2026-06-22T02:37:07.3791843Z       ],
2026-06-22T02:37:07.3791952Z       "stages": {
2026-06-22T02:37:07.3792058Z         "doc": {
2026-06-22T02:37:07.3792187Z           "complete": false,
2026-06-22T02:37:07.3792291Z           "evidence": []
2026-06-22T02:37:07.3792397Z         },
2026-06-22T02:37:07.3792501Z         "impl": {
2026-06-22T02:37:07.3792615Z           "complete": true,
2026-06-22T02:37:07.3792726Z           "evidence": [
2026-06-22T02:37:07.3792830Z             {
2026-06-22T02:37:07.3792969Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3793079Z               "line": 116
2026-06-22T02:37:07.3793183Z             },
2026-06-22T02:37:07.3793284Z             {
2026-06-22T02:37:07.3793427Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3793536Z               "line": 211
2026-06-22T02:37:07.3793642Z             }
2026-06-22T02:37:07.3793751Z           ]
2026-06-22T02:37:07.3793854Z         },
2026-06-22T02:37:07.3793954Z         "int": {
2026-06-22T02:37:07.3794059Z           "complete": false,
2026-06-22T02:37:07.3794166Z           "evidence": []
2026-06-22T02:37:07.3794272Z         },
2026-06-22T02:37:07.3794382Z         "unit": {
2026-06-22T02:37:07.3794495Z           "complete": true,
2026-06-22T02:37:07.3794591Z           "evidence": [
2026-06-22T02:37:07.3794687Z             {
2026-06-22T02:37:07.3794814Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3794930Z               "line": 388
2026-06-22T02:37:07.3795134Z             },
2026-06-22T02:37:07.3795240Z             {
2026-06-22T02:37:07.3795382Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.3795492Z               "line": 469
2026-06-22T02:37:07.3795593Z             }
2026-06-22T02:37:07.3795692Z           ]
2026-06-22T02:37:07.3795797Z         }
2026-06-22T02:37:07.3795903Z       }
2026-06-22T02:37:07.3796007Z     },
2026-06-22T02:37:07.3796117Z     {
2026-06-22T02:37:07.3796261Z       "id": "REQ-HAZARD-DETACHED-PIPE-INHERIT",
2026-06-22T02:37:07.3797377Z       "title": "Windows detached long-lived children must not inherit a captured caller's pipe: every detach-spawn of an immortal child (daemon, shell binary) runs bInheritHandles=FALSE, or a caller capturing output anywhere up the process chain hangs forever on a pipe that never EOFs — std-handle flag stripping is NOT sufficient (grandparent strays still flow) (5.6)",
2026-06-22T02:37:07.3797597Z       "requiredStages": [
2026-06-22T02:37:07.3797710Z         "impl",
2026-06-22T02:37:07.3797826Z         "unit"
2026-06-22T02:37:07.3797920Z       ],
2026-06-22T02:37:07.3798025Z       "stages": {
2026-06-22T02:37:07.3798131Z         "doc": {
2026-06-22T02:37:07.3798245Z           "complete": true,
2026-06-22T02:37:07.3798350Z           "evidence": [
2026-06-22T02:37:07.3798456Z             {
2026-06-22T02:37:07.3798592Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3798698Z               "line": 206
2026-06-22T02:37:07.3798804Z             }
2026-06-22T02:37:07.3798907Z           ]
2026-06-22T02:37:07.3799105Z         },
2026-06-22T02:37:07.3799208Z         "impl": {
2026-06-22T02:37:07.3799330Z           "complete": true,
2026-06-22T02:37:07.3799441Z           "evidence": [
2026-06-22T02:37:07.3799546Z             {
2026-06-22T02:37:07.3799693Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3799799Z               "line": 691
2026-06-22T02:37:07.3799917Z             },
2026-06-22T02:37:07.3800018Z             {
2026-06-22T02:37:07.3800166Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3800280Z               "line": 791
2026-06-22T02:37:07.3800381Z             },
2026-06-22T02:37:07.3800481Z             {
2026-06-22T02:37:07.3800613Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3800738Z               "line": 1120
2026-06-22T02:37:07.3800833Z             },
2026-06-22T02:37:07.3800942Z             {
2026-06-22T02:37:07.3801091Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.3801200Z               "line": 184
2026-06-22T02:37:07.3801301Z             }
2026-06-22T02:37:07.3801406Z           ]
2026-06-22T02:37:07.3801514Z         },
2026-06-22T02:37:07.3801618Z         "int": {
2026-06-22T02:37:07.3801737Z           "complete": false,
2026-06-22T02:37:07.3801845Z           "evidence": []
2026-06-22T02:37:07.3801950Z         },
2026-06-22T02:37:07.3802051Z         "unit": {
2026-06-22T02:37:07.3804928Z           "complete": true,
2026-06-22T02:37:07.3805132Z           "evidence": [
2026-06-22T02:37:07.3805295Z             {
2026-06-22T02:37:07.3805466Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3805576Z               "line": 1169
2026-06-22T02:37:07.3805680Z             },
2026-06-22T02:37:07.3805785Z             {
2026-06-22T02:37:07.3805947Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:37:07.3806067Z               "line": 44
2026-06-22T02:37:07.3806168Z             },
2026-06-22T02:37:07.3806266Z             {
2026-06-22T02:37:07.3806425Z               "path": "crates/spt/tests/shell_actgate_e2e.rs",
2026-06-22T02:37:07.3806535Z               "line": 52
2026-06-22T02:37:07.3806653Z             },
2026-06-22T02:37:07.3806755Z             {
2026-06-22T02:37:07.3806883Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:37:07.3806991Z               "line": 57
2026-06-22T02:37:07.3807086Z             },
2026-06-22T02:37:07.3807186Z             {
2026-06-22T02:37:07.3807504Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T02:37:07.3807608Z               "line": 54
2026-06-22T02:37:07.3807713Z             }
2026-06-22T02:37:07.3807814Z           ]
2026-06-22T02:37:07.3807913Z         }
2026-06-22T02:37:07.3808023Z       }
2026-06-22T02:37:07.3808124Z     },
2026-06-22T02:37:07.3808223Z     {
2026-06-22T02:37:07.3808377Z       "id": "REQ-HAZARD-DIRECT-WRITE-PRECEDENCE",
2026-06-22T02:37:07.3808614Z       "title": "Direct-write precedence marker (with node id) guards stale overwrite (6.5)",
2026-06-22T02:37:07.3808735Z       "requiredStages": [
2026-06-22T02:37:07.3808839Z         "impl",
2026-06-22T02:37:07.3809120Z         "unit"
2026-06-22T02:37:07.3809224Z       ],
2026-06-22T02:37:07.3809326Z       "stages": {
2026-06-22T02:37:07.3809435Z         "doc": {
2026-06-22T02:37:07.3809549Z           "complete": false,
2026-06-22T02:37:07.3809665Z           "evidence": []
2026-06-22T02:37:07.3809763Z         },
2026-06-22T02:37:07.3809872Z         "impl": {
2026-06-22T02:37:07.3809992Z           "complete": true,
2026-06-22T02:37:07.3810102Z           "evidence": [
2026-06-22T02:37:07.3810201Z             {
2026-06-22T02:37:07.3810349Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3810458Z               "line": 26
2026-06-22T02:37:07.3810563Z             },
2026-06-22T02:37:07.3810669Z             {
2026-06-22T02:37:07.3810816Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3810926Z               "line": 135
2026-06-22T02:37:07.3811031Z             },
2026-06-22T02:37:07.3811121Z             {
2026-06-22T02:37:07.3811280Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:37:07.3811398Z               "line": 26
2026-06-22T02:37:07.3811507Z             },
2026-06-22T02:37:07.3811614Z             {
2026-06-22T02:37:07.3811760Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:37:07.3811866Z               "line": 237
2026-06-22T02:37:07.3811971Z             }
2026-06-22T02:37:07.3812079Z           ]
2026-06-22T02:37:07.3812184Z         },
2026-06-22T02:37:07.3812288Z         "int": {
2026-06-22T02:37:07.3812411Z           "complete": false,
2026-06-22T02:37:07.3812510Z           "evidence": []
2026-06-22T02:37:07.3812611Z         },
2026-06-22T02:37:07.3812716Z         "unit": {
2026-06-22T02:37:07.3812834Z           "complete": true,
2026-06-22T02:37:07.3812940Z           "evidence": [
2026-06-22T02:37:07.3813044Z             {
2026-06-22T02:37:07.3813174Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3813283Z               "line": 161
2026-06-22T02:37:07.3813388Z             },
2026-06-22T02:37:07.3813489Z             {
2026-06-22T02:37:07.3813636Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3813740Z               "line": 170
2026-06-22T02:37:07.3813846Z             },
2026-06-22T02:37:07.3813946Z             {
2026-06-22T02:37:07.3814069Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3814180Z               "line": 179
2026-06-22T02:37:07.3814284Z             },
2026-06-22T02:37:07.3814389Z             {
2026-06-22T02:37:07.3814528Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3814632Z               "line": 190
2026-06-22T02:37:07.3814738Z             },
2026-06-22T02:37:07.3814843Z             {
2026-06-22T02:37:07.3814970Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3815074Z               "line": 199
2026-06-22T02:37:07.3815183Z             },
2026-06-22T02:37:07.3815282Z             {
2026-06-22T02:37:07.3815406Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3815516Z               "line": 216
2026-06-22T02:37:07.3815620Z             },
2026-06-22T02:37:07.3815726Z             {
2026-06-22T02:37:07.3815855Z               "path": "crates/spt-live/src/context.rs",
2026-06-22T02:37:07.3815963Z               "line": 242
2026-06-22T02:37:07.3816060Z             },
2026-06-22T02:37:07.3816269Z             {
2026-06-22T02:37:07.3816413Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.3816522Z               "line": 295
2026-06-22T02:37:07.3816627Z             },
2026-06-22T02:37:07.3816723Z             {
2026-06-22T02:37:07.3816860Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.3816971Z               "line": 244
2026-06-22T02:37:07.3817076Z             },
2026-06-22T02:37:07.3817184Z             {
2026-06-22T02:37:07.3817329Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:37:07.3817443Z               "line": 265
2026-06-22T02:37:07.3817541Z             },
2026-06-22T02:37:07.3817755Z             {
2026-06-22T02:37:07.3817906Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:37:07.3818011Z               "line": 293
2026-06-22T02:37:07.3818112Z             },
2026-06-22T02:37:07.3818211Z             {
2026-06-22T02:37:07.3818360Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:37:07.3818474Z               "line": 317
2026-06-22T02:37:07.3818583Z             },
2026-06-22T02:37:07.3818684Z             {
2026-06-22T02:37:07.3818821Z               "path": "crates/spt-store/src/contextmark.rs",
2026-06-22T02:37:07.3818932Z               "line": 327
2026-06-22T02:37:07.3819117Z             },
2026-06-22T02:37:07.3819222Z             {
2026-06-22T02:37:07.3819365Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.3819479Z               "line": 540
2026-06-22T02:37:07.3819581Z             }
2026-06-22T02:37:07.3819703Z           ]
2026-06-22T02:37:07.3819813Z         }
2026-06-22T02:37:07.3819920Z       }
2026-06-22T02:37:07.3820027Z     },
2026-06-22T02:37:07.3820138Z     {
2026-06-22T02:37:07.3820333Z       "id": "REQ-HAZARD-DRIVEN-BY-IDLE-REMOTE-EVICT",
2026-06-22T02:37:07.3825130Z       "title": "An spt-hosted endpoint driven by a REMOTE controller whose remote is gone but whose broker connection stays OPEN (a wedged/lost pump that never delivers the detach) AND whose session is IDLE (no output) stays latched ONLINE+CONTROLLED forever: the W1 drain-evict only fires on OUTPUT (CONTROLLER_WRITE_DEADLINE on a backed-up write), a clean disconnect self-heals via detach_if→clear_controller, but an idle session with a half-open/wedged controller connection produces neither signal. PROVED repro-first on a real broker (v0.13.0 W5, inject_control_wedge.rs w5_a2): controller_by STAYS Some(origin) and driven_by STAYS Some after the remote is abandoned without a clean EOF on an idle session — so the brain reconcile CANNOT detect it from KIND_SESSIONS controller_by (the broker still reports it controlled). FIX DIRECTION (doyle ruling 2026-06-19, broker-side single-writer — the broker owns driven_by/clear_controller): wire the EXISTING D4c NetPresence connection-disconnect event → clear_controller for any session whose controller identity == the dead origin (become_controller already stores Some(origin); presence events already exist — modest wiring, NOT a new probe). The liveness ORACLE is QUIC's own keepalive/idle-timeout: a presence-disconnect IS a real QUIC conn close, already tolerant of transient blips within the keepalive window, so NO heavy partition ADR is needed UNLESS the QUIC timeout proves too slow for the UX (then mint an ADR for a faster controller-heartbeat + its false-evict bound). Composes with W1 (output path) + W5 Gap B (no-session) — this is the third, idle-remote, leg. (v0.13.0 follow-up)",
2026-06-22T02:37:07.3825312Z       "requiredStages": [],
2026-06-22T02:37:07.3825426Z       "stages": {
2026-06-22T02:37:07.3825530Z         "doc": {
2026-06-22T02:37:07.3825649Z           "complete": false,
2026-06-22T02:37:07.3825762Z           "evidence": []
2026-06-22T02:37:07.3825870Z         },
2026-06-22T02:37:07.3825986Z         "impl": {
2026-06-22T02:37:07.3826100Z           "complete": false,
2026-06-22T02:37:07.3826218Z           "evidence": []
2026-06-22T02:37:07.3826324Z         },
2026-06-22T02:37:07.3826434Z         "int": {
2026-06-22T02:37:07.3826653Z           "complete": false,
2026-06-22T02:37:07.3826758Z           "evidence": []
2026-06-22T02:37:07.3826862Z         },
2026-06-22T02:37:07.3826964Z         "unit": {
2026-06-22T02:37:07.3827077Z           "complete": false,
2026-06-22T02:37:07.3827177Z           "evidence": []
2026-06-22T02:37:07.3827283Z         }
2026-06-22T02:37:07.3827378Z       }
2026-06-22T02:37:07.3827482Z     },
2026-06-22T02:37:07.3827589Z     {
2026-06-22T02:37:07.3827721Z       "id": "REQ-HAZARD-DRIVEN-BY-SELFHEAL",
2026-06-22T02:37:07.3829410Z       "title": "An spt-hosted endpoint's ONLINE+CONTROLLED state (`driven_by`) must CLEAR even when the detach IPC is lost — do NOT rely on the detach signal (same lesson as REQ-HAZARD-HOSTED-LIVENESS-RECONCILE B2): the reconcile loop clears `driven_by` when the endpoint has no live controller/session. Today a wedged or lost pump never delivers the detach, so the endpoint stays latched CONTROLLED forever. Composes with W1 (the wedge no longer blocks the detach) and rides the same pull-primary reconcile substrate as B2. (v0.13.0)",
2026-06-22T02:37:07.3829729Z       "requiredStages": [
2026-06-22T02:37:07.3829840Z         "impl",
2026-06-22T02:37:07.3829949Z         "unit",
2026-06-22T02:37:07.3830049Z         "int"
2026-06-22T02:37:07.3830165Z       ],
2026-06-22T02:37:07.3830264Z       "stages": {
2026-06-22T02:37:07.3830373Z         "doc": {
2026-06-22T02:37:07.3830489Z           "complete": false,
2026-06-22T02:37:07.3830593Z           "evidence": []
2026-06-22T02:37:07.3830703Z         },
2026-06-22T02:37:07.3830809Z         "impl": {
2026-06-22T02:37:07.3830926Z           "complete": true,
2026-06-22T02:37:07.3831049Z           "evidence": [
2026-06-22T02:37:07.3831155Z             {
2026-06-22T02:37:07.3831302Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3831417Z               "line": 538
2026-06-22T02:37:07.3831522Z             },
2026-06-22T02:37:07.3831621Z             {
2026-06-22T02:37:07.3831766Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3831880Z               "line": 641
2026-06-22T02:37:07.3831974Z             },
2026-06-22T02:37:07.3832066Z             {
2026-06-22T02:37:07.3832265Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:37:07.3832381Z               "line": 21
2026-06-22T02:37:07.3832485Z             }
2026-06-22T02:37:07.3832589Z           ]
2026-06-22T02:37:07.3832691Z         },
2026-06-22T02:37:07.3832790Z         "int": {
2026-06-22T02:37:07.3832904Z           "complete": true,
2026-06-22T02:37:07.3833001Z           "evidence": [
2026-06-22T02:37:07.3833105Z             {
2026-06-22T02:37:07.3833279Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:37:07.3833385Z               "line": 236
2026-06-22T02:37:07.3833487Z             },
2026-06-22T02:37:07.3833582Z             {
2026-06-22T02:37:07.3833736Z               "path": "crates/spt-daemon/tests/driven_by_selfheal.rs",
2026-06-22T02:37:07.3833854Z               "line": 396
2026-06-22T02:37:07.3833960Z             },
2026-06-22T02:37:07.3834065Z             {
2026-06-22T02:37:07.3834235Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.3834347Z               "line": 1534
2026-06-22T02:37:07.3834451Z             },
2026-06-22T02:37:07.3834560Z             {
2026-06-22T02:37:07.3834732Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.3834846Z               "line": 1712
2026-06-22T02:37:07.3834943Z             }
2026-06-22T02:37:07.3835042Z           ]
2026-06-22T02:37:07.3835147Z         },
2026-06-22T02:37:07.3835243Z         "unit": {
2026-06-22T02:37:07.3835366Z           "complete": true,
2026-06-22T02:37:07.3835476Z           "evidence": [
2026-06-22T02:37:07.3835582Z             {
2026-06-22T02:37:07.3835728Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3835839Z               "line": 887
2026-06-22T02:37:07.3835940Z             }
2026-06-22T02:37:07.3836181Z           ]
2026-06-22T02:37:07.3836290Z         }
2026-06-22T02:37:07.3836388Z       }
2026-06-22T02:37:07.3836493Z     },
2026-06-22T02:37:07.3836594Z     {
2026-06-22T02:37:07.3836746Z       "id": "REQ-HAZARD-DROP-FILE-SINGLE-WRITER",
2026-06-22T02:37:07.3836913Z       "title": "Drop files are daemon-owned single-writer (6.4)",
2026-06-22T02:37:07.3837031Z       "requiredStages": [
2026-06-22T02:37:07.3837137Z         "impl",
2026-06-22T02:37:07.3837247Z         "unit"
2026-06-22T02:37:07.3837356Z       ],
2026-06-22T02:37:07.3837466Z       "stages": {
2026-06-22T02:37:07.3837576Z         "doc": {
2026-06-22T02:37:07.3837685Z           "complete": false,
2026-06-22T02:37:07.3837891Z           "evidence": []
2026-06-22T02:37:07.3838000Z         },
2026-06-22T02:37:07.3838105Z         "impl": {
2026-06-22T02:37:07.3838215Z           "complete": true,
2026-06-22T02:37:07.3838324Z           "evidence": [
2026-06-22T02:37:07.3838430Z             {
2026-06-22T02:37:07.3838572Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:37:07.3838676Z               "line": 25
2026-06-22T02:37:07.3838791Z             },
2026-06-22T02:37:07.3838894Z             {
2026-06-22T02:37:07.3839117Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.3839223Z               "line": 26
2026-06-22T02:37:07.3839331Z             },
2026-06-22T02:37:07.3839442Z             {
2026-06-22T02:37:07.3839589Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.3839699Z               "line": 159
2026-06-22T02:37:07.3839799Z             }
2026-06-22T02:37:07.3839909Z           ]
2026-06-22T02:37:07.3840009Z         },
2026-06-22T02:37:07.3840123Z         "int": {
2026-06-22T02:37:07.3840233Z           "complete": false,
2026-06-22T02:37:07.3840338Z           "evidence": []
2026-06-22T02:37:07.3840443Z         },
2026-06-22T02:37:07.3840548Z         "unit": {
2026-06-22T02:37:07.3840667Z           "complete": true,
2026-06-22T02:37:07.3840772Z           "evidence": [
2026-06-22T02:37:07.3840882Z             {
2026-06-22T02:37:07.3841011Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:37:07.3841115Z               "line": 188
2026-06-22T02:37:07.3841220Z             },
2026-06-22T02:37:07.3841316Z             {
2026-06-22T02:37:07.3841449Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:37:07.3841557Z               "line": 240
2026-06-22T02:37:07.3841663Z             },
2026-06-22T02:37:07.3841764Z             {
2026-06-22T02:37:07.3841895Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.3842001Z               "line": 186
2026-06-22T02:37:07.3842102Z             }
2026-06-22T02:37:07.3842215Z           ]
2026-06-22T02:37:07.3842316Z         }
2026-06-22T02:37:07.3842411Z       }
2026-06-22T02:37:07.3842506Z     },
2026-06-22T02:37:07.3842612Z     {
2026-06-22T02:37:07.3842735Z       "id": "REQ-HAZARD-EBUSY-RENAME",
2026-06-22T02:37:07.3842912Z       "title": "tmp-write + atomic-rename + retry on Windows EBUSY (5.2)",
2026-06-22T02:37:07.3843036Z       "requiredStages": [
2026-06-22T02:37:07.3843135Z         "impl",
2026-06-22T02:37:07.3843251Z         "unit"
2026-06-22T02:37:07.3843351Z       ],
2026-06-22T02:37:07.3843455Z       "stages": {
2026-06-22T02:37:07.3843561Z         "doc": {
2026-06-22T02:37:07.3843670Z           "complete": false,
2026-06-22T02:37:07.3843783Z           "evidence": []
2026-06-22T02:37:07.3843888Z         },
2026-06-22T02:37:07.3843997Z         "impl": {
2026-06-22T02:37:07.3844110Z           "complete": true,
2026-06-22T02:37:07.3844219Z           "evidence": [
2026-06-22T02:37:07.3844321Z             {
2026-06-22T02:37:07.3844458Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3844563Z               "line": 48
2026-06-22T02:37:07.3844668Z             },
2026-06-22T02:37:07.3844767Z             {
2026-06-22T02:37:07.3844893Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3845002Z               "line": 55
2026-06-22T02:37:07.3845198Z             },
2026-06-22T02:37:07.3845302Z             {
2026-06-22T02:37:07.3845444Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3845551Z               "line": 74
2026-06-22T02:37:07.3845646Z             },
2026-06-22T02:37:07.3845745Z             {
2026-06-22T02:37:07.3845884Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3845998Z               "line": 91
2026-06-22T02:37:07.3846099Z             }
2026-06-22T02:37:07.3846204Z           ]
2026-06-22T02:37:07.3846298Z         },
2026-06-22T02:37:07.3846404Z         "int": {
2026-06-22T02:37:07.3846519Z           "complete": false,
2026-06-22T02:37:07.3846726Z           "evidence": []
2026-06-22T02:37:07.3846836Z         },
2026-06-22T02:37:07.3846939Z         "unit": {
2026-06-22T02:37:07.3847048Z           "complete": true,
2026-06-22T02:37:07.3847159Z           "evidence": [
2026-06-22T02:37:07.3847258Z             {
2026-06-22T02:37:07.3847392Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3847511Z               "line": 149
2026-06-22T02:37:07.3847620Z             },
2026-06-22T02:37:07.3847726Z             {
2026-06-22T02:37:07.3847860Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3847964Z               "line": 166
2026-06-22T02:37:07.3848060Z             },
2026-06-22T02:37:07.3848164Z             {
2026-06-22T02:37:07.3848298Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3848404Z               "line": 176
2026-06-22T02:37:07.3848507Z             },
2026-06-22T02:37:07.3848617Z             {
2026-06-22T02:37:07.3848747Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3848865Z               "line": 194
2026-06-22T02:37:07.3849066Z             },
2026-06-22T02:37:07.3849175Z             {
2026-06-22T02:37:07.3849317Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.3849412Z               "line": 207
2026-06-22T02:37:07.3849520Z             }
2026-06-22T02:37:07.3849610Z           ]
2026-06-22T02:37:07.3849716Z         }
2026-06-22T02:37:07.3849815Z       }
2026-06-22T02:37:07.3849920Z     },
2026-06-22T02:37:07.3850021Z     {
2026-06-22T02:37:07.3850149Z       "id": "REQ-HAZARD-ECHO-BEFORE-SIGNOFF",
2026-06-22T02:37:07.3850369Z       "title": "Echo-commune fires before INIT_SIGNOFF on orphan teardown (3.3)",
2026-06-22T02:37:07.3850478Z       "requiredStages": [
2026-06-22T02:37:07.3850588Z         "impl",
2026-06-22T02:37:07.3850698Z         "unit"
2026-06-22T02:37:07.3850802Z       ],
2026-06-22T02:37:07.3850903Z       "stages": {
2026-06-22T02:37:07.3851008Z         "doc": {
2026-06-22T02:37:07.3851136Z           "complete": false,
2026-06-22T02:37:07.3851242Z           "evidence": []
2026-06-22T02:37:07.3851346Z         },
2026-06-22T02:37:07.3851451Z         "impl": {
2026-06-22T02:37:07.3851567Z           "complete": true,
2026-06-22T02:37:07.3851680Z           "evidence": [
2026-06-22T02:37:07.3851790Z             {
2026-06-22T02:37:07.3851943Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3852051Z               "line": 466
2026-06-22T02:37:07.3852160Z             },
2026-06-22T02:37:07.3852261Z             {
2026-06-22T02:37:07.3852404Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.3852518Z               "line": 26
2026-06-22T02:37:07.3852614Z             }
2026-06-22T02:37:07.3852718Z           ]
2026-06-22T02:37:07.3852818Z         },
2026-06-22T02:37:07.3852929Z         "int": {
2026-06-22T02:37:07.3853047Z           "complete": false,
2026-06-22T02:37:07.3853157Z           "evidence": []
2026-06-22T02:37:07.3853267Z         },
2026-06-22T02:37:07.3853376Z         "unit": {
2026-06-22T02:37:07.3853497Z           "complete": true,
2026-06-22T02:37:07.3853601Z           "evidence": [
2026-06-22T02:37:07.3853710Z             {
2026-06-22T02:37:07.3853835Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.3853944Z               "line": 150
2026-06-22T02:37:07.3854150Z             },
2026-06-22T02:37:07.3854244Z             {
2026-06-22T02:37:07.3854391Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.3854500Z               "line": 208
2026-06-22T02:37:07.3854604Z             }
2026-06-22T02:37:07.3854708Z           ]
2026-06-22T02:37:07.3854803Z         }
2026-06-22T02:37:07.3854909Z       }
2026-06-22T02:37:07.3855013Z     },
2026-06-22T02:37:07.3855109Z     {
2026-06-22T02:37:07.3855247Z       "id": "REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE",
2026-06-22T02:37:07.3864242Z       "title": "The effect journal serializes EVERY PTY effect under one mutex held ACROSS two fsyncs AND the blocking PTY write — so interactive input stutters and ultimately wedges the daemon hard. ROOT (doyle /diagnose, code-grounded + MEASURED on the operator's real Windows box, 2026-06-19): EffectJournal::apply_once (effect.rs:168-188) takes `inner.lock()` and holds it across `write_line(PENDING)` → `effect()` → `write_line(DONE)`, where write_line (effect.rs:235-239) does flush()+sync_all() (a full FlushFileBuffers) — so each effect pays TWO fsyncs under a GLOBAL lock, and the closure `effect()` (the actual PTY write, broker.rs:1257 EffectKind::PtyWrite via attach.rs:197 send_effect) runs while the lock is held. Two operator-visible facets, ONE root: (A) STUTTER/LAG — every keystroke is a PtyWrite effect = 2× sync_all serialized; measured fsync on %LOCALAPPDATA%\\spt-core = median 6.5ms, spikes to 198ms (C: was recently at 100%), so ~13ms+ per keystroke best case, hundreds under contention → 'many but not all keypresses take 100s of ms, choppy, worsens with volume'. (B) HARD PERMANENT WEDGE — when a PtyWrite `effect()` blocks (ConPTY input buffer full / harness not draining stdin), the journal lock is held INDEFINITELY → the single-threaded inbound-stream dispatch (dispatch.rs serve_attach, which both applies input effects AND opens attaches) can never progress → EVERY subsequent attach (`spt rc --view`/`--take`) fails with 'attach request: brain IPC read deadline elapsed' (confirmed: two retries deadline identically; broker control-plane KIND queries still answer — different thread). This REFUTES the W2-deferred ruling that park-(b)/(c) is 'Windows-benign because ConPTY absorbs 4MiB' — on the real box the input path wedges regardless. DISTINCT from W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST = the OUTPUT drain, correctly fixed @8b5583e; output uses broker.rs:1106 append, NOT the fsync journal). This is the INPUT/effect-journal path W1 never touched, and it is THE wedge the operator hits with --take/--view. FIX DIRECTION (candidates, repro-first — extend inject_control_wedge.rs to a REAL backed-up-PTY-consumer + a real rc-client attach assertion, the gap W1's gate missed): (1) do NOT hold the journal lock across effect() — reserve the key + fsync PENDING under lock, RELEASE, run effect(), re-acquire to fsync DONE + mark applied (preserve crash-idempotency via the per-key reservation, not a global hold); (2) bound/fail-fast the PtyWrite itself (the W2-deferred park bound — write_input must never block indefinitely, DSR-answer must not hold the writer mutex across a blocking write); (3) drop per-keystroke fsync on the interactive path — PtyWrite effects are EPHEMERAL (a keystroke lost on a broker crash is retyped; PTY state is not reconstructed from keystroke replay), so in-memory applied-set dedup suffices (the broker survives the brain — that IS the dedup anchor), with async/batched fsync or no-fsync for EffectKind::PtyWrite while durable kinds (NetSend/NetDial/Registry/Spool) keep their fsync. Combine (1)+(3) at minimum. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T02:37:07.3864599Z       "requiredStages": [
2026-06-22T02:37:07.3864706Z         "impl",
2026-06-22T02:37:07.3864813Z         "unit",
2026-06-22T02:37:07.3864922Z         "int"
2026-06-22T02:37:07.3865028Z       ],
2026-06-22T02:37:07.3865140Z       "stages": {
2026-06-22T02:37:07.3865244Z         "doc": {
2026-06-22T02:37:07.3865368Z           "complete": false,
2026-06-22T02:37:07.3865578Z           "evidence": []
2026-06-22T02:37:07.3865688Z         },
2026-06-22T02:37:07.3865793Z         "impl": {
2026-06-22T02:37:07.3865911Z           "complete": true,
2026-06-22T02:37:07.3866027Z           "evidence": [
2026-06-22T02:37:07.3866127Z             {
2026-06-22T02:37:07.3866280Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.3866385Z               "line": 99
2026-06-22T02:37:07.3866498Z             },
2026-06-22T02:37:07.3866599Z             {
2026-06-22T02:37:07.3866746Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.3866865Z               "line": 201
2026-06-22T02:37:07.3866967Z             }
2026-06-22T02:37:07.3867147Z           ]
2026-06-22T02:37:07.3867244Z         },
2026-06-22T02:37:07.3867352Z         "int": {
2026-06-22T02:37:07.3867457Z           "complete": true,
2026-06-22T02:37:07.3867568Z           "evidence": [
2026-06-22T02:37:07.3867667Z             {
2026-06-22T02:37:07.3867846Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.3867966Z               "line": 770
2026-06-22T02:37:07.3868068Z             }
2026-06-22T02:37:07.3868168Z           ]
2026-06-22T02:37:07.3868260Z         },
2026-06-22T02:37:07.3868365Z         "unit": {
2026-06-22T02:37:07.3868492Z           "complete": true,
2026-06-22T02:37:07.3868603Z           "evidence": [
2026-06-22T02:37:07.3868703Z             {
2026-06-22T02:37:07.3868842Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.3869050Z               "line": 517
2026-06-22T02:37:07.3869146Z             },
2026-06-22T02:37:07.3869256Z             {
2026-06-22T02:37:07.3869403Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.3869538Z               "line": 576
2026-06-22T02:37:07.3869646Z             }
2026-06-22T02:37:07.3869747Z           ]
2026-06-22T02:37:07.3869853Z         }
2026-06-22T02:37:07.3869951Z       }
2026-06-22T02:37:07.3870047Z     },
2026-06-22T02:37:07.3870149Z     {
2026-06-22T02:37:07.3870295Z       "id": "REQ-HAZARD-ELEVATED-DAEMON-SPAWN",
2026-06-22T02:37:07.3871617Z       "title": "The daemon always runs unelevated in the invoking user's universe, regardless of which command spawns it: an elevated spawner de-elevates (Windows: UAC linked token via CreateProcessWithTokenW; Linux: drop to SUDO_UID/SUDO_GID + the invoker's HOME) — an elevated daemon's pipes deny unelevated clients (every later spt reads not-running→spawn→bind Access-denied) and a sudo'd daemon roots the user's state universe (5.7)",
2026-06-22T02:37:07.3871747Z       "requiredStages": [
2026-06-22T02:37:07.3871846Z         "doc",
2026-06-22T02:37:07.3871951Z         "impl",
2026-06-22T02:37:07.3872057Z         "unit"
2026-06-22T02:37:07.3872156Z       ],
2026-06-22T02:37:07.3872266Z       "stages": {
2026-06-22T02:37:07.3872372Z         "doc": {
2026-06-22T02:37:07.3872495Z           "complete": true,
2026-06-22T02:37:07.3872605Z           "evidence": [
2026-06-22T02:37:07.3872711Z             {
2026-06-22T02:37:07.3872842Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3872948Z               "line": 214
2026-06-22T02:37:07.3873054Z             }
2026-06-22T02:37:07.3873161Z           ]
2026-06-22T02:37:07.3873266Z         },
2026-06-22T02:37:07.3873372Z         "impl": {
2026-06-22T02:37:07.3873490Z           "complete": true,
2026-06-22T02:37:07.3873600Z           "evidence": [
2026-06-22T02:37:07.3873706Z             {
2026-06-22T02:37:07.3873838Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3873953Z               "line": 56
2026-06-22T02:37:07.3874058Z             },
2026-06-22T02:37:07.3874158Z             {
2026-06-22T02:37:07.3874307Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.3874416Z               "line": 580
2026-06-22T02:37:07.3874520Z             },
2026-06-22T02:37:07.3874612Z             {
2026-06-22T02:37:07.3874768Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3874873Z               "line": 36
2026-06-22T02:37:07.3875088Z             },
2026-06-22T02:37:07.3875193Z             {
2026-06-22T02:37:07.3875336Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3875440Z               "line": 59
2026-06-22T02:37:07.3875544Z             },
2026-06-22T02:37:07.3875649Z             {
2026-06-22T02:37:07.3875804Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3875915Z               "line": 83
2026-06-22T02:37:07.3876015Z             },
2026-06-22T02:37:07.3876118Z             {
2026-06-22T02:37:07.3876268Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3876391Z               "line": 140
2026-06-22T02:37:07.3876616Z             },
2026-06-22T02:37:07.3876729Z             {
2026-06-22T02:37:07.3876873Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3876987Z               "line": 159
2026-06-22T02:37:07.3877091Z             },
2026-06-22T02:37:07.3877198Z             {
2026-06-22T02:37:07.3877354Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3877455Z               "line": 384
2026-06-22T02:37:07.3877565Z             },
2026-06-22T02:37:07.3877669Z             {
2026-06-22T02:37:07.3877799Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3877912Z               "line": 535
2026-06-22T02:37:07.3878017Z             },
2026-06-22T02:37:07.3878118Z             {
2026-06-22T02:37:07.3878265Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3878378Z               "line": 581
2026-06-22T02:37:07.3878483Z             },
2026-06-22T02:37:07.3878591Z             {
2026-06-22T02:37:07.3878733Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.3878840Z               "line": 300
2026-06-22T02:37:07.3878934Z             },
2026-06-22T02:37:07.3879121Z             {
2026-06-22T02:37:07.3879249Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:37:07.3879358Z               "line": 42
2026-06-22T02:37:07.3879464Z             }
2026-06-22T02:37:07.3879569Z           ]
2026-06-22T02:37:07.3879673Z         },
2026-06-22T02:37:07.3879774Z         "int": {
2026-06-22T02:37:07.3879893Z           "complete": false,
2026-06-22T02:37:07.3880002Z           "evidence": []
2026-06-22T02:37:07.3880098Z         },
2026-06-22T02:37:07.3880206Z         "unit": {
2026-06-22T02:37:07.3880312Z           "complete": true,
2026-06-22T02:37:07.3880418Z           "evidence": [
2026-06-22T02:37:07.3880521Z             {
2026-06-22T02:37:07.3880666Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3880776Z               "line": 813
2026-06-22T02:37:07.3880878Z             },
2026-06-22T02:37:07.3880983Z             {
2026-06-22T02:37:07.3881130Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3881228Z               "line": 854
2026-06-22T02:37:07.3881329Z             },
2026-06-22T02:37:07.3881435Z             {
2026-06-22T02:37:07.3881591Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.3881702Z               "line": 928
2026-06-22T02:37:07.3881802Z             }
2026-06-22T02:37:07.3881901Z           ]
2026-06-22T02:37:07.3882007Z         }
2026-06-22T02:37:07.3882112Z       }
2026-06-22T02:37:07.3882215Z     },
2026-06-22T02:37:07.3882322Z     {
2026-06-22T02:37:07.3882473Z       "id": "REQ-HAZARD-ENDPOINT-RUN-ATTACH-OUTPUT",
2026-06-22T02:37:07.3887304Z       "title": "A clean `spt rc` attach to a LIVE spt-hosted (`endpoint run`) harness must DELIVER the harness's PTY output. KEYSTONE — the operator's central 'attach shows no output' symptom, reproduced on the real dummy-harness fixture (v0.12.1 Wave 1) with NO death and NO wedge: bringup succeeds (online, harness pid alive + heartbeating, psyche hosted), the attach CONNECTS (PUMP_IPC_READER spawned, no RC_FAIL, holds the full window) — but receives EXACTLY 0 bytes over 10s of the harness's flushed [session.self] stdout. DISTINCT from REQ-HAZARD-VIEWER-CLOSE-DETACH (death) and REQ-HAZARD-ATTACH-WEDGE (dead-child backpressure): here the harness is ALIVE and the attach is a clean first subscribe. This BLOCKS the 'view is independent' invariant — re-attach is meaningless if a live endpoint-run harness shows nothing. KNOWN-GOOD (rules out 'no drain'): attach.rs `local_attach_via_loopback_conn_rides_the_same_pump` + `broker_spawns_the_pty_child_in_the_requested_cwd` prove the broker DOES drain+fan a `spawn_session` PTY child to a loopback attach over the SAME transport rc uses. Both spawn_session and endpoint-run's spawn_session_pid send KIND_SPAWN → the same dispatch_spawn (broker.rs:706/835) which starts the per-session drain+OutputLog — so the gap is NARROWER than 'no drain', endpoint-run-specific. Root candidates: (a) spawn_session_pid's SpawnReq stdio/env/cwd differs so the dummy's stdout isn't the captured ConPTY; (b) the harness stdout WRITE BLOCKS because the ConPTY buffer fills (drain not reading THIS pty) — explains alive-but-0-bytes; (c) ConPTY reader-park (KH 7.6) on this path; (d) `spt rc` resolve_session/subscribe for an endpoint-run session subscribes to the wrong/empty log. (v0.12.1)",
2026-06-22T02:37:07.3887681Z       "requiredStages": [
2026-06-22T02:37:07.3887786Z         "impl",
2026-06-22T02:37:07.3887891Z         "unit",
2026-06-22T02:37:07.3888000Z         "int"
2026-06-22T02:37:07.3888096Z       ],
2026-06-22T02:37:07.3888200Z       "stages": {
2026-06-22T02:37:07.3888305Z         "doc": {
2026-06-22T02:37:07.3888416Z           "complete": false,
2026-06-22T02:37:07.3888524Z           "evidence": []
2026-06-22T02:37:07.3888615Z         },
2026-06-22T02:37:07.3888721Z         "impl": {
2026-06-22T02:37:07.3888844Z           "complete": true,
2026-06-22T02:37:07.3889034Z           "evidence": [
2026-06-22T02:37:07.3889128Z             {
2026-06-22T02:37:07.3889274Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.3889380Z               "line": 204
2026-06-22T02:37:07.3889480Z             }
2026-06-22T02:37:07.3889594Z           ]
2026-06-22T02:37:07.3889695Z         },
2026-06-22T02:37:07.3889800Z         "int": {
2026-06-22T02:37:07.3889918Z           "complete": true,
2026-06-22T02:37:07.3890019Z           "evidence": [
2026-06-22T02:37:07.3890129Z             {
2026-06-22T02:37:07.3890276Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T02:37:07.3890391Z               "line": 296
2026-06-22T02:37:07.3890491Z             }
2026-06-22T02:37:07.3890596Z           ]
2026-06-22T02:37:07.3890706Z         },
2026-06-22T02:37:07.3890805Z         "unit": {
2026-06-22T02:37:07.3890916Z           "complete": true,
2026-06-22T02:37:07.3891025Z           "evidence": [
2026-06-22T02:37:07.3891135Z             {
2026-06-22T02:37:07.3891278Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.3891387Z               "line": 467
2026-06-22T02:37:07.3891491Z             }
2026-06-22T02:37:07.3891595Z           ]
2026-06-22T02:37:07.3891699Z         }
2026-06-22T02:37:07.3891803Z       }
2026-06-22T02:37:07.3891908Z     },
2026-06-22T02:37:07.3892000Z     {
2026-06-22T02:37:07.3892132Z       "id": "REQ-HAZARD-ENV-SUBST",
2026-06-22T02:37:07.3895456Z       "title": "`spt endpoint run` HONORS manifest [env.<VAR>] direction=inject values (with {key} substitution) on the spt-hosted spawn. Today only the [session.self] command ARGV is {id}-substituted; the [env] inject value is NEITHER substituted NOR applied — manifest.schema.json promises EnvVar.value = 'Value to inject (with substitution)' but prepare_harness_spawn fills only argv and SpawnReq carries no env, so a [env.SPT_ENDPOINT_ID].value='{id}' arrives EMPTY. A FLAGLESS harness (bare `claude`, no argv slot for {id}) then routes the id via [env] → empty → SessionStart sees empty $SPT_ENDPOINT_ID → seeds-by-PPID instead of binding → ZERO perch → NO_PERCH (the actual wall-b bind blocker; perri hard-repro'd). SILENT failure (empty inject, no error). FIX (doyle ruled a): fill every [env] inject value from the SAME {key} catalog as argv/role (mirror F-009 TEMPLATE fill, whole-string fill_template for an env value), thread it through SpawnReq.env → the broker sets it on the spawned PTY child. Correctness fix — schema already promises it, NO manifest change, NO new binary. PAIRS with REQ-SEND-SPT-HOSTED to make endpoint run fully work. doyle F-013. (post-v0.10.0)",
2026-06-22T02:37:07.3895722Z       "requiredStages": [
2026-06-22T02:37:07.3895831Z         "impl",
2026-06-22T02:37:07.3895936Z         "unit",
2026-06-22T02:37:07.3896042Z         "int"
2026-06-22T02:37:07.3896151Z       ],
2026-06-22T02:37:07.3896260Z       "stages": {
2026-06-22T02:37:07.3896362Z         "doc": {
2026-06-22T02:37:07.3896484Z           "complete": false,
2026-06-22T02:37:07.3896703Z           "evidence": []
2026-06-22T02:37:07.3896811Z         },
2026-06-22T02:37:07.3896915Z         "impl": {
2026-06-22T02:37:07.3897030Z           "complete": true,
2026-06-22T02:37:07.3897135Z           "evidence": [
2026-06-22T02:37:07.3897235Z             {
2026-06-22T02:37:07.3897402Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.3897506Z               "line": 123
2026-06-22T02:37:07.3897616Z             },
2026-06-22T02:37:07.3897717Z             {
2026-06-22T02:37:07.3897859Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:37:07.3897970Z               "line": 134
2026-06-22T02:37:07.3898074Z             }
2026-06-22T02:37:07.3898183Z           ]
2026-06-22T02:37:07.3898289Z         },
2026-06-22T02:37:07.3898393Z         "int": {
2026-06-22T02:37:07.3898503Z           "complete": true,
2026-06-22T02:37:07.3898614Z           "evidence": [
2026-06-22T02:37:07.3898713Z             {
2026-06-22T02:37:07.3898865Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.3899070Z               "line": 312
2026-06-22T02:37:07.3899166Z             },
2026-06-22T02:37:07.3899268Z             {
2026-06-22T02:37:07.3899399Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.3899508Z               "line": 525
2026-06-22T02:37:07.3899618Z             }
2026-06-22T02:37:07.3899720Z           ]
2026-06-22T02:37:07.3899829Z         },
2026-06-22T02:37:07.3899935Z         "unit": {
2026-06-22T02:37:07.3900049Z           "complete": true,
2026-06-22T02:37:07.3900159Z           "evidence": [
2026-06-22T02:37:07.3900269Z             {
2026-06-22T02:37:07.3900426Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.3900527Z               "line": 250
2026-06-22T02:37:07.3900627Z             }
2026-06-22T02:37:07.3900731Z           ]
2026-06-22T02:37:07.3900836Z         }
2026-06-22T02:37:07.3900937Z       }
2026-06-22T02:37:07.3901046Z     },
2026-06-22T02:37:07.3901156Z     {
2026-06-22T02:37:07.3901299Z       "id": "REQ-HAZARD-ENVELOPE-CR-LINESAFE",
2026-06-22T02:37:07.3903021Z       "title": "Envelope CR-linesafety (4.1): the line-framed EVENT codec must neutralize raw carriage returns — `event_body_escape` folds CRLF/lone-CR to the codec's representable linebreak (`\\n`→`<br>`) BEFORE framing, so a body carrying `\\r` (Windows `echo`/CRLF text crossing nodes) cannot survive into the single-line envelope and trigger a receiver terminal CR→col0 overwrite that corrupts the frame. Robustness on unrepresentable input, NOT a wire-format change (decoder untouched, amp-last invariant held). Belt-and-suspenders: `spt send`/`ring` also trim stdin (parity with `notify`).",
2026-06-22T02:37:07.3903155Z       "requiredStages": [
2026-06-22T02:37:07.3903260Z         "impl",
2026-06-22T02:37:07.3903360Z         "unit"
2026-06-22T02:37:07.3903461Z       ],
2026-06-22T02:37:07.3903575Z       "stages": {
2026-06-22T02:37:07.3903675Z         "doc": {
2026-06-22T02:37:07.3903804Z           "complete": false,
2026-06-22T02:37:07.3903909Z           "evidence": []
2026-06-22T02:37:07.3904018Z         },
2026-06-22T02:37:07.3904128Z         "impl": {
2026-06-22T02:37:07.3904233Z           "complete": true,
2026-06-22T02:37:07.3904338Z           "evidence": [
2026-06-22T02:37:07.3904439Z             {
2026-06-22T02:37:07.3904706Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3904810Z               "line": 31
2026-06-22T02:37:07.3904918Z             }
2026-06-22T02:37:07.3905028Z           ]
2026-06-22T02:37:07.3905129Z         },
2026-06-22T02:37:07.3905237Z         "int": {
2026-06-22T02:37:07.3905343Z           "complete": false,
2026-06-22T02:37:07.3905463Z           "evidence": []
2026-06-22T02:37:07.3905571Z         },
2026-06-22T02:37:07.3905672Z         "unit": {
2026-06-22T02:37:07.3905782Z           "complete": true,
2026-06-22T02:37:07.3905890Z           "evidence": [
2026-06-22T02:37:07.3906001Z             {
2026-06-22T02:37:07.3906248Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3906378Z               "line": 181
2026-06-22T02:37:07.3906487Z             }
2026-06-22T02:37:07.3906588Z           ]
2026-06-22T02:37:07.3910399Z         }
2026-06-22T02:37:07.3910534Z       }
2026-06-22T02:37:07.3910643Z     },
2026-06-22T02:37:07.3910752Z     {
2026-06-22T02:37:07.3910920Z       "id": "REQ-HAZARD-ENVELOPE-DECODE-ORDER",
2026-06-22T02:37:07.3911116Z       "title": "Envelope decode order, ampersand decoded last (4.1)",
2026-06-22T02:37:07.3911235Z       "requiredStages": [
2026-06-22T02:37:07.3911338Z         "impl",
2026-06-22T02:37:07.3911440Z         "unit"
2026-06-22T02:37:07.3911544Z       ],
2026-06-22T02:37:07.3911653Z       "stages": {
2026-06-22T02:37:07.3911760Z         "doc": {
2026-06-22T02:37:07.3911887Z           "complete": false,
2026-06-22T02:37:07.3911992Z           "evidence": []
2026-06-22T02:37:07.3912098Z         },
2026-06-22T02:37:07.3912202Z         "impl": {
2026-06-22T02:37:07.3912332Z           "complete": true,
2026-06-22T02:37:07.3912441Z           "evidence": [
2026-06-22T02:37:07.3912545Z             {
2026-06-22T02:37:07.3912702Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3912801Z               "line": 49
2026-06-22T02:37:07.3912895Z             },
2026-06-22T02:37:07.3913005Z             {
2026-06-22T02:37:07.3913158Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3913261Z               "line": 81
2026-06-22T02:37:07.3913368Z             }
2026-06-22T02:37:07.3913473Z           ]
2026-06-22T02:37:07.3913576Z         },
2026-06-22T02:37:07.3913687Z         "int": {
2026-06-22T02:37:07.3913792Z           "complete": false,
2026-06-22T02:37:07.3913910Z           "evidence": []
2026-06-22T02:37:07.3914002Z         },
2026-06-22T02:37:07.3914111Z         "unit": {
2026-06-22T02:37:07.3914225Z           "complete": true,
2026-06-22T02:37:07.3914336Z           "evidence": [
2026-06-22T02:37:07.3914445Z             {
2026-06-22T02:37:07.3914598Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3914707Z               "line": 156
2026-06-22T02:37:07.3914807Z             },
2026-06-22T02:37:07.3914913Z             {
2026-06-22T02:37:07.3915064Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3915179Z               "line": 173
2026-06-22T02:37:07.3915285Z             },
2026-06-22T02:37:07.3915388Z             {
2026-06-22T02:37:07.3915535Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3915637Z               "line": 196
2026-06-22T02:37:07.3915741Z             }
2026-06-22T02:37:07.3915845Z           ]
2026-06-22T02:37:07.3915947Z         }
2026-06-22T02:37:07.3916051Z       }
2026-06-22T02:37:07.3916155Z     },
2026-06-22T02:37:07.3916256Z     {
2026-06-22T02:37:07.3916399Z       "id": "REQ-HAZARD-ENVELOPE-PARSER-SAFE",
2026-06-22T02:37:07.3916609Z       "title": "Two-slice envelope parser is panic-free and tolerant (4.2)",
2026-06-22T02:37:07.3916732Z       "requiredStages": [
2026-06-22T02:37:07.3916838Z         "impl",
2026-06-22T02:37:07.3916947Z         "unit"
2026-06-22T02:37:07.3917052Z       ],
2026-06-22T02:37:07.3917163Z       "stages": {
2026-06-22T02:37:07.3917267Z         "doc": {
2026-06-22T02:37:07.3917390Z           "complete": false,
2026-06-22T02:37:07.3917666Z           "evidence": []
2026-06-22T02:37:07.3917765Z         },
2026-06-22T02:37:07.3917871Z         "impl": {
2026-06-22T02:37:07.3917983Z           "complete": true,
2026-06-22T02:37:07.3918087Z           "evidence": [
2026-06-22T02:37:07.3918193Z             {
2026-06-22T02:37:07.3918340Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3918450Z               "line": 120
2026-06-22T02:37:07.3918551Z             }
2026-06-22T02:37:07.3918655Z           ]
2026-06-22T02:37:07.3918756Z         },
2026-06-22T02:37:07.3918865Z         "int": {
2026-06-22T02:37:07.3919066Z           "complete": false,
2026-06-22T02:37:07.3919180Z           "evidence": []
2026-06-22T02:37:07.3919390Z         },
2026-06-22T02:37:07.3919486Z         "unit": {
2026-06-22T02:37:07.3919604Z           "complete": true,
2026-06-22T02:37:07.3919710Z           "evidence": [
2026-06-22T02:37:07.3919810Z             {
2026-06-22T02:37:07.3919957Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3920063Z               "line": 212
2026-06-22T02:37:07.3920176Z             },
2026-06-22T02:37:07.3920267Z             {
2026-06-22T02:37:07.3920402Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3920505Z               "line": 221
2026-06-22T02:37:07.3920604Z             },
2026-06-22T02:37:07.3920700Z             {
2026-06-22T02:37:07.3920845Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3920959Z               "line": 229
2026-06-22T02:37:07.3921060Z             },
2026-06-22T02:37:07.3921169Z             {
2026-06-22T02:37:07.3921313Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3921432Z               "line": 239
2026-06-22T02:37:07.3921522Z             },
2026-06-22T02:37:07.3921628Z             {
2026-06-22T02:37:07.3921776Z               "path": "crates/spt-proto/src/envelope.rs",
2026-06-22T02:37:07.3921885Z               "line": 249
2026-06-22T02:37:07.3921996Z             }
2026-06-22T02:37:07.3922104Z           ]
2026-06-22T02:37:07.3922209Z         }
2026-06-22T02:37:07.3922306Z       }
2026-06-22T02:37:07.3922404Z     },
2026-06-22T02:37:07.3922509Z     {
2026-06-22T02:37:07.3922640Z       "id": "REQ-HAZARD-EPHEMERAL-CLEANUP",
2026-06-22T02:37:07.3922829Z       "title": "Ephemeral perch cleanup on every ring exit path (3.1)",
2026-06-22T02:37:07.3922935Z       "requiredStages": [
2026-06-22T02:37:07.3923048Z         "impl",
2026-06-22T02:37:07.3923142Z         "unit"
2026-06-22T02:37:07.3923247Z       ],
2026-06-22T02:37:07.3923361Z       "stages": {
2026-06-22T02:37:07.3923464Z         "doc": {
2026-06-22T02:37:07.3923569Z           "complete": false,
2026-06-22T02:37:07.3923685Z           "evidence": []
2026-06-22T02:37:07.3923793Z         },
2026-06-22T02:37:07.3923894Z         "impl": {
2026-06-22T02:37:07.3924009Z           "complete": true,
2026-06-22T02:37:07.3924113Z           "evidence": [
2026-06-22T02:37:07.3924214Z             {
2026-06-22T02:37:07.3924356Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.3924451Z               "line": 14
2026-06-22T02:37:07.3924553Z             },
2026-06-22T02:37:07.3924657Z             {
2026-06-22T02:37:07.3924790Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.3924901Z               "line": 63
2026-06-22T02:37:07.3925000Z             }
2026-06-22T02:37:07.3925095Z           ]
2026-06-22T02:37:07.3925197Z         },
2026-06-22T02:37:07.3925305Z         "int": {
2026-06-22T02:37:07.3925414Z           "complete": false,
2026-06-22T02:37:07.3925526Z           "evidence": []
2026-06-22T02:37:07.3925629Z         },
2026-06-22T02:37:07.3925739Z         "unit": {
2026-06-22T02:37:07.3925864Z           "complete": true,
2026-06-22T02:37:07.3925972Z           "evidence": [
2026-06-22T02:37:07.3926076Z             {
2026-06-22T02:37:07.3926216Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.3926325Z               "line": 164
2026-06-22T02:37:07.3926434Z             },
2026-06-22T02:37:07.3926639Z             {
2026-06-22T02:37:07.3926774Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.3926883Z               "line": 198
2026-06-22T02:37:07.3926996Z             },
2026-06-22T02:37:07.3927088Z             {
2026-06-22T02:37:07.3927221Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.3927335Z               "line": 220
2026-06-22T02:37:07.3927436Z             }
2026-06-22T02:37:07.3927540Z           ]
2026-06-22T02:37:07.3927640Z         }
2026-06-22T02:37:07.3927746Z       }
2026-06-22T02:37:07.3927846Z     },
2026-06-22T02:37:07.3927946Z     {
2026-06-22T02:37:07.3928080Z       "id": "REQ-HAZARD-EPOCH-RESET",
2026-06-22T02:37:07.3929616Z       "title": "Advertisement-epoch reset strands a node: peers' higher last-seen epoch drops the reset node's fresh advertisements as Stale until the counter outruns history. Common case (full reinstall/re-pair) is mitigated by REQ-SUBNET-7's ceremony eviction (peer-side epoch memory dies with the deleted row — acceptance-verified); the residual narrow slice (epoch file lost, identity kept) is documented, guard deferred to a field hit (4.11)",
2026-06-22T02:37:07.3929745Z       "requiredStages": [],
2026-06-22T02:37:07.3929854Z       "stages": {
2026-06-22T02:37:07.3929960Z         "doc": {
2026-06-22T02:37:07.3930079Z           "complete": true,
2026-06-22T02:37:07.3930183Z           "evidence": [
2026-06-22T02:37:07.3930289Z             {
2026-06-22T02:37:07.3930426Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3930536Z               "line": 165
2026-06-22T02:37:07.3930643Z             }
2026-06-22T02:37:07.3930746Z           ]
2026-06-22T02:37:07.3930846Z         },
2026-06-22T02:37:07.3930952Z         "impl": {
2026-06-22T02:37:07.3931079Z           "complete": false,
2026-06-22T02:37:07.3931188Z           "evidence": []
2026-06-22T02:37:07.3931298Z         },
2026-06-22T02:37:07.3931401Z         "int": {
2026-06-22T02:37:07.3931514Z           "complete": false,
2026-06-22T02:37:07.3931630Z           "evidence": []
2026-06-22T02:37:07.3931730Z         },
2026-06-22T02:37:07.3931839Z         "unit": {
2026-06-22T02:37:07.3931945Z           "complete": false,
2026-06-22T02:37:07.3932059Z           "evidence": []
2026-06-22T02:37:07.3932149Z         }
2026-06-22T02:37:07.3932255Z       }
2026-06-22T02:37:07.3932355Z     },
2026-06-22T02:37:07.3932454Z     {
2026-06-22T02:37:07.3932603Z       "id": "REQ-HAZARD-EVENTPART-REASSEMBLY",
2026-06-22T02:37:07.3932846Z       "title": "EVENT-PART split/reassembly is byte-exact; orphan parts dropped silently",
2026-06-22T02:37:07.3932964Z       "requiredStages": [
2026-06-22T02:37:07.3933060Z         "impl",
2026-06-22T02:37:07.3933161Z         "unit"
2026-06-22T02:37:07.3933265Z       ],
2026-06-22T02:37:07.3933375Z       "stages": {
2026-06-22T02:37:07.3933485Z         "doc": {
2026-06-22T02:37:07.3933599Z           "complete": false,
2026-06-22T02:37:07.3933712Z           "evidence": []
2026-06-22T02:37:07.3933807Z         },
2026-06-22T02:37:07.3933925Z         "impl": {
2026-06-22T02:37:07.3934029Z           "complete": true,
2026-06-22T02:37:07.3934139Z           "evidence": [
2026-06-22T02:37:07.3934245Z             {
2026-06-22T02:37:07.3934381Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3934493Z               "line": 76
2026-06-22T02:37:07.3934602Z             },
2026-06-22T02:37:07.3934711Z             {
2026-06-22T02:37:07.3934859Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3934964Z               "line": 167
2026-06-22T02:37:07.3935074Z             },
2026-06-22T02:37:07.3935169Z             {
2026-06-22T02:37:07.3935307Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3935428Z               "line": 233
2026-06-22T02:37:07.3935522Z             },
2026-06-22T02:37:07.3935632Z             {
2026-06-22T02:37:07.3935752Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3935860Z               "line": 272
2026-06-22T02:37:07.3936077Z             }
2026-06-22T02:37:07.3936203Z           ]
2026-06-22T02:37:07.3936309Z         },
2026-06-22T02:37:07.3936419Z         "int": {
2026-06-22T02:37:07.3936537Z           "complete": false,
2026-06-22T02:37:07.3936646Z           "evidence": []
2026-06-22T02:37:07.3936752Z         },
2026-06-22T02:37:07.3936856Z         "unit": {
2026-06-22T02:37:07.3936961Z           "complete": true,
2026-06-22T02:37:07.3937067Z           "evidence": [
2026-06-22T02:37:07.3937171Z             {
2026-06-22T02:37:07.3937314Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3937419Z               "line": 321
2026-06-22T02:37:07.3937523Z             },
2026-06-22T02:37:07.3937719Z             {
2026-06-22T02:37:07.3937862Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3937978Z               "line": 329
2026-06-22T02:37:07.3938068Z             },
2026-06-22T02:37:07.3938167Z             {
2026-06-22T02:37:07.3938298Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3938406Z               "line": 356
2026-06-22T02:37:07.3938511Z             },
2026-06-22T02:37:07.3938622Z             {
2026-06-22T02:37:07.3938749Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3938858Z               "line": 395
2026-06-22T02:37:07.3939057Z             },
2026-06-22T02:37:07.3939156Z             {
2026-06-22T02:37:07.3939304Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3939409Z               "line": 406
2026-06-22T02:37:07.3939508Z             },
2026-06-22T02:37:07.3939609Z             {
2026-06-22T02:37:07.3939743Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3939852Z               "line": 418
2026-06-22T02:37:07.3939958Z             },
2026-06-22T02:37:07.3940057Z             {
2026-06-22T02:37:07.3940196Z               "path": "crates/spt-proto/src/chunk.rs",
2026-06-22T02:37:07.3940301Z               "line": 442
2026-06-22T02:37:07.3940405Z             }
2026-06-22T02:37:07.3940515Z           ]
2026-06-22T02:37:07.3940620Z         }
2026-06-22T02:37:07.3940715Z       }
2026-06-22T02:37:07.3940815Z     },
2026-06-22T02:37:07.3940921Z     {
2026-06-22T02:37:07.3941054Z       "id": "REQ-HAZARD-GEN-START-NOW",
2026-06-22T02:37:07.3941231Z       "title": "gen_start = now() on cold-start and handoff (2.4)",
2026-06-22T02:37:07.3941339Z       "requiredStages": [
2026-06-22T02:37:07.3941440Z         "impl",
2026-06-22T02:37:07.3941546Z         "int"
2026-06-22T02:37:07.3941644Z       ],
2026-06-22T02:37:07.3941744Z       "stages": {
2026-06-22T02:37:07.3941853Z         "doc": {
2026-06-22T02:37:07.3941971Z           "complete": false,
2026-06-22T02:37:07.3942084Z           "evidence": []
2026-06-22T02:37:07.3942186Z         },
2026-06-22T02:37:07.3942290Z         "impl": {
2026-06-22T02:37:07.3942399Z           "complete": true,
2026-06-22T02:37:07.3942501Z           "evidence": [
2026-06-22T02:37:07.3942605Z             {
2026-06-22T02:37:07.3942753Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.3942862Z               "line": 22
2026-06-22T02:37:07.3942976Z             }
2026-06-22T02:37:07.3943072Z           ]
2026-06-22T02:37:07.3943177Z         },
2026-06-22T02:37:07.3943281Z         "int": {
2026-06-22T02:37:07.3943397Z           "complete": true,
2026-06-22T02:37:07.3943497Z           "evidence": [
2026-06-22T02:37:07.3943601Z             {
2026-06-22T02:37:07.3943740Z               "path": "crates/spt-daemon/tests/handoff.rs",
2026-06-22T02:37:07.3943844Z               "line": 18
2026-06-22T02:37:07.3943949Z             }
2026-06-22T02:37:07.3944036Z           ]
2026-06-22T02:37:07.3944141Z         },
2026-06-22T02:37:07.3944258Z         "unit": {
2026-06-22T02:37:07.3944372Z           "complete": false,
2026-06-22T02:37:07.3944486Z           "evidence": []
2026-06-22T02:37:07.3944580Z         }
2026-06-22T02:37:07.3944685Z       }
2026-06-22T02:37:07.3944786Z     },
2026-06-22T02:37:07.3944885Z     {
2026-06-22T02:37:07.3945024Z       "id": "REQ-HAZARD-GRACE-BEFORE-SIGNOFF",
2026-06-22T02:37:07.3945344Z       "title": "Grace-period wait completes before composing INIT_SIGNOFF (1.1)",
2026-06-22T02:37:07.3945458Z       "requiredStages": [
2026-06-22T02:37:07.3945562Z         "impl",
2026-06-22T02:37:07.3945673Z         "unit"
2026-06-22T02:37:07.3945767Z       ],
2026-06-22T02:37:07.3945867Z       "stages": {
2026-06-22T02:37:07.3945973Z         "doc": {
2026-06-22T02:37:07.3946087Z           "complete": false,
2026-06-22T02:37:07.3946201Z           "evidence": []
2026-06-22T02:37:07.3946298Z         },
2026-06-22T02:37:07.3946406Z         "impl": {
2026-06-22T02:37:07.3946516Z           "complete": true,
2026-06-22T02:37:07.3946812Z           "evidence": [
2026-06-22T02:37:07.3946922Z             {
2026-06-22T02:37:07.3947073Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3947187Z               "line": 465
2026-06-22T02:37:07.3947288Z             },
2026-06-22T02:37:07.3947388Z             {
2026-06-22T02:37:07.3947526Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.3947631Z               "line": 27
2026-06-22T02:37:07.3947740Z             }
2026-06-22T02:37:07.3947845Z           ]
2026-06-22T02:37:07.3947951Z         },
2026-06-22T02:37:07.3948055Z         "int": {
2026-06-22T02:37:07.3948175Z           "complete": false,
2026-06-22T02:37:07.3948284Z           "evidence": []
2026-06-22T02:37:07.3948384Z         },
2026-06-22T02:37:07.3948489Z         "unit": {
2026-06-22T02:37:07.3948594Z           "complete": true,
2026-06-22T02:37:07.3948694Z           "evidence": [
2026-06-22T02:37:07.3948804Z             {
2026-06-22T02:37:07.3949013Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.3949138Z               "line": 990
2026-06-22T02:37:07.3949243Z             },
2026-06-22T02:37:07.3949351Z             {
2026-06-22T02:37:07.3949494Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.3949607Z               "line": 181
2026-06-22T02:37:07.3949716Z             }
2026-06-22T02:37:07.3949821Z           ]
2026-06-22T02:37:07.3949922Z         }
2026-06-22T02:37:07.3950025Z       }
2026-06-22T02:37:07.3950131Z     },
2026-06-22T02:37:07.3950231Z     {
2026-06-22T02:37:07.3950373Z       "id": "REQ-HAZARD-HANDOFF-ARGV-COMPAT",
2026-06-22T02:37:07.3950565Z       "title": "Broker/brain IPC + handoff argv version-tolerant (2.3)",
2026-06-22T02:37:07.3950688Z       "requiredStages": [
2026-06-22T02:37:07.3950785Z         "impl",
2026-06-22T02:37:07.3950889Z         "unit"
2026-06-22T02:37:07.3950998Z       ],
2026-06-22T02:37:07.3951095Z       "stages": {
2026-06-22T02:37:07.3951204Z         "doc": {
2026-06-22T02:37:07.3951327Z           "complete": false,
2026-06-22T02:37:07.3951438Z           "evidence": []
2026-06-22T02:37:07.3951533Z         },
2026-06-22T02:37:07.3951637Z         "impl": {
2026-06-22T02:37:07.3951758Z           "complete": true,
2026-06-22T02:37:07.3951871Z           "evidence": [
2026-06-22T02:37:07.3951976Z             {
2026-06-22T02:37:07.3952130Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3952237Z               "line": 73
2026-06-22T02:37:07.3952342Z             },
2026-06-22T02:37:07.3952451Z             {
2026-06-22T02:37:07.3952602Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3952712Z               "line": 972
2026-06-22T02:37:07.3952813Z             },
2026-06-22T02:37:07.3952921Z             {
2026-06-22T02:37:07.3953070Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:37:07.3953175Z               "line": 20
2026-06-22T02:37:07.3953284Z             },
2026-06-22T02:37:07.3953385Z             {
2026-06-22T02:37:07.3953532Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:37:07.3953642Z               "line": 100
2026-06-22T02:37:07.3953747Z             },
2026-06-22T02:37:07.3953851Z             {
2026-06-22T02:37:07.3953991Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.3954094Z               "line": 619
2026-06-22T02:37:07.3954315Z             },
2026-06-22T02:37:07.3954419Z             {
2026-06-22T02:37:07.3954567Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:37:07.3954673Z               "line": 68
2026-06-22T02:37:07.3954780Z             },
2026-06-22T02:37:07.3954879Z             {
2026-06-22T02:37:07.3955032Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:37:07.3955145Z               "line": 80
2026-06-22T02:37:07.3955236Z             }
2026-06-22T02:37:07.3955341Z           ]
2026-06-22T02:37:07.3955450Z         },
2026-06-22T02:37:07.3955555Z         "int": {
2026-06-22T02:37:07.3955665Z           "complete": true,
2026-06-22T02:37:07.3955880Z           "evidence": [
2026-06-22T02:37:07.3955984Z             {
2026-06-22T02:37:07.3956122Z               "path": "crates/spt/tests/n1_pairing.rs",
2026-06-22T02:37:07.3956238Z               "line": 44
2026-06-22T02:37:07.3956342Z             }
2026-06-22T02:37:07.3956451Z           ]
2026-06-22T02:37:07.3956562Z         },
2026-06-22T02:37:07.3956666Z         "unit": {
2026-06-22T02:37:07.3956781Z           "complete": true,
2026-06-22T02:37:07.3956887Z           "evidence": [
2026-06-22T02:37:07.3956990Z             {
2026-06-22T02:37:07.3957124Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3957235Z               "line": 1181
2026-06-22T02:37:07.3957343Z             },
2026-06-22T02:37:07.3957454Z             {
2026-06-22T02:37:07.3957601Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.3957709Z               "line": 1197
2026-06-22T02:37:07.3957819Z             },
2026-06-22T02:37:07.3957943Z             {
2026-06-22T02:37:07.3958124Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.3958229Z               "line": 2454
2026-06-22T02:37:07.3958329Z             },
2026-06-22T02:37:07.3958434Z             {
2026-06-22T02:37:07.3958563Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:37:07.3958687Z               "line": 152
2026-06-22T02:37:07.3958788Z             },
2026-06-22T02:37:07.3958897Z             {
2026-06-22T02:37:07.3959131Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:37:07.3959240Z               "line": 175
2026-06-22T02:37:07.3959349Z             },
2026-06-22T02:37:07.3959446Z             {
2026-06-22T02:37:07.3959592Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:37:07.3959703Z               "line": 186
2026-06-22T02:37:07.3959803Z             },
2026-06-22T02:37:07.3959907Z             {
2026-06-22T02:37:07.3960035Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:37:07.3960163Z               "line": 202
2026-06-22T02:37:07.3960271Z             },
2026-06-22T02:37:07.3960381Z             {
2026-06-22T02:37:07.3960514Z               "path": "crates/spt-daemon/src/frame.rs",
2026-06-22T02:37:07.3960623Z               "line": 216
2026-06-22T02:37:07.3960729Z             },
2026-06-22T02:37:07.3960834Z             {
2026-06-22T02:37:07.3960986Z               "path": "crates/spt-daemon/src/transport.rs",
2026-06-22T02:37:07.3961087Z               "line": 137
2026-06-22T02:37:07.3961191Z             },
2026-06-22T02:37:07.3961287Z             {
2026-06-22T02:37:07.3961426Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3961544Z               "line": 8152
2026-06-22T02:37:07.3961640Z             },
2026-06-22T02:37:07.3961745Z             {
2026-06-22T02:37:07.3961883Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T02:37:07.3961989Z               "line": 30
2026-06-22T02:37:07.3962093Z             },
2026-06-22T02:37:07.3962202Z             {
2026-06-22T02:37:07.3962351Z               "path": "crates/spt/tests/n1_compat.rs",
2026-06-22T02:37:07.3962459Z               "line": 73
2026-06-22T02:37:07.3962561Z             }
2026-06-22T02:37:07.3962652Z           ]
2026-06-22T02:37:07.3962760Z         }
2026-06-22T02:37:07.3962854Z       }
2026-06-22T02:37:07.3963067Z     },
2026-06-22T02:37:07.3963171Z     {
2026-06-22T02:37:07.3963325Z       "id": "REQ-HAZARD-HOSTED-LIVENESS-RECONCILE",
2026-06-22T02:37:07.3967312Z       "title": "B2 KEYSTONE: a daemon-hosted (spt-hosted) endpoint's info.json status is RECONCILED to real liveness, not left latched online. The broker exit-waiter (broker.rs:889-910) reaps its in-mem session table + emits ExitEvent but NEVER touches info.json; lifecycle::mark_offline only fires on Psyche teardown — so a dead/exited harness (operator closed the tab) stays status=online forever (is_perch_alive returns ONLINE for daemon-hosted, liveness.rs:80-93). FIX (doyle ruled PULL-PRIMARY — the live-status analog of REQ-HAZARD-ROSTER-GHOST): the livehost reconcile loop (reconcile_once livehost.rs:226-313) queries the broker's live session set (KIND_SESSIONS) each tick and, for any status=online live_agent perch PAST the boot grace whose endpoint has NO live broker session, marks it offline (lifecycle::mark_offline → status=offline → is_perch_alive=false). GATED on spt-hosted (controllable==Some(true)) so a HARNESS-HOSTED relay live agent (api listen, legitimately online with no broker session) is NEVER mis-marked. Crash-robust + self-healing on the next tick (clear-on-event is not crash-robust alone). PUSH (brain ExitEvent→mark_offline) is an OPTIONAL fast-path only if the daemon brain is reliably subscribed to all hosted sessions; correctness rides the pull. Broker stays stateless (ADR-0004 §B — brain owns the info.json write). (v0.12.0)",
2026-06-22T02:37:07.3967579Z       "requiredStages": [
2026-06-22T02:37:07.3967689Z         "impl",
2026-06-22T02:37:07.3967790Z         "unit",
2026-06-22T02:37:07.3967893Z         "int"
2026-06-22T02:37:07.3968004Z       ],
2026-06-22T02:37:07.3968110Z       "stages": {
2026-06-22T02:37:07.3968212Z         "doc": {
2026-06-22T02:37:07.3968326Z           "complete": false,
2026-06-22T02:37:07.3968446Z           "evidence": []
2026-06-22T02:37:07.3968546Z         },
2026-06-22T02:37:07.3968655Z         "impl": {
2026-06-22T02:37:07.3968780Z           "complete": true,
2026-06-22T02:37:07.3968889Z           "evidence": [
2026-06-22T02:37:07.3969085Z             {
2026-06-22T02:37:07.3969242Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3969353Z               "line": 510
2026-06-22T02:37:07.3969447Z             },
2026-06-22T02:37:07.3969552Z             {
2026-06-22T02:37:07.3969706Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3969815Z               "line": 704
2026-06-22T02:37:07.3969924Z             }
2026-06-22T02:37:07.3970025Z           ]
2026-06-22T02:37:07.3970129Z         },
2026-06-22T02:37:07.3970234Z         "int": {
2026-06-22T02:37:07.3970363Z           "complete": true,
2026-06-22T02:37:07.3970467Z           "evidence": [
2026-06-22T02:37:07.3970571Z             {
2026-06-22T02:37:07.3970727Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3970831Z               "line": 1119
2026-06-22T02:37:07.3970936Z             },
2026-06-22T02:37:07.3971033Z             {
2026-06-22T02:37:07.3971203Z               "path": "crates/spt/tests/attach_wedge_e2e.rs",
2026-06-22T02:37:07.3971314Z               "line": 312
2026-06-22T02:37:07.3971413Z             }
2026-06-22T02:37:07.3971522Z           ]
2026-06-22T02:37:07.3971623Z         },
2026-06-22T02:37:07.3971737Z         "unit": {
2026-06-22T02:37:07.3971847Z           "complete": true,
2026-06-22T02:37:07.3971952Z           "evidence": [
2026-06-22T02:37:07.3972066Z             {
2026-06-22T02:37:07.3972205Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.3972324Z               "line": 821
2026-06-22T02:37:07.3972429Z             }
2026-06-22T02:37:07.3972540Z           ]
2026-06-22T02:37:07.3972643Z         }
2026-06-22T02:37:07.3972748Z       }
2026-06-22T02:37:07.3972859Z     },
2026-06-22T02:37:07.3972963Z     {
2026-06-22T02:37:07.3973082Z       "id": "REQ-HAZARD-ID-CHARSET",
2026-06-22T02:37:07.3973358Z       "title": "Addressable-id charset reserves :/@ delimiters; validated at every creation seam (4.6)",
2026-06-22T02:37:07.3973581Z       "requiredStages": [
2026-06-22T02:37:07.3973689Z         "impl",
2026-06-22T02:37:07.3973799Z         "unit"
2026-06-22T02:37:07.3973904Z       ],
2026-06-22T02:37:07.3974013Z       "stages": {
2026-06-22T02:37:07.3974123Z         "doc": {
2026-06-22T02:37:07.3974233Z           "complete": true,
2026-06-22T02:37:07.3974337Z           "evidence": [
2026-06-22T02:37:07.3974443Z             {
2026-06-22T02:37:07.3974581Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.3974694Z               "line": 133
2026-06-22T02:37:07.3974787Z             }
2026-06-22T02:37:07.3974986Z           ]
2026-06-22T02:37:07.3975092Z         },
2026-06-22T02:37:07.3975191Z         "impl": {
2026-06-22T02:37:07.3975301Z           "complete": true,
2026-06-22T02:37:07.3975412Z           "evidence": [
2026-06-22T02:37:07.3975520Z             {
2026-06-22T02:37:07.3975658Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.3975774Z               "line": 65
2026-06-22T02:37:07.3975877Z             },
2026-06-22T02:37:07.3975986Z             {
2026-06-22T02:37:07.3976120Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:37:07.3976227Z               "line": 17
2026-06-22T02:37:07.3976341Z             },
2026-06-22T02:37:07.3976452Z             {
2026-06-22T02:37:07.3976598Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3976709Z               "line": 146
2026-06-22T02:37:07.3976819Z             },
2026-06-22T02:37:07.3976923Z             {
2026-06-22T02:37:07.3977067Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3977177Z               "line": 310
2026-06-22T02:37:07.3977271Z             },
2026-06-22T02:37:07.3977377Z             {
2026-06-22T02:37:07.3977510Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.3977619Z               "line": 441
2026-06-22T02:37:07.3977725Z             },
2026-06-22T02:37:07.3977835Z             {
2026-06-22T02:37:07.3977983Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.3978092Z               "line": 32
2026-06-22T02:37:07.3978201Z             },
2026-06-22T02:37:07.3978293Z             {
2026-06-22T02:37:07.3978425Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3978540Z               "line": 1283
2026-06-22T02:37:07.3978631Z             },
2026-06-22T02:37:07.3978740Z             {
2026-06-22T02:37:07.3978867Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3979055Z               "line": 6161
2026-06-22T02:37:07.3979158Z             },
2026-06-22T02:37:07.3979263Z             {
2026-06-22T02:37:07.3979402Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.3979506Z               "line": 6443
2026-06-22T02:37:07.3979617Z             }
2026-06-22T02:37:07.3979717Z           ]
2026-06-22T02:37:07.3979816Z         },
2026-06-22T02:37:07.3979918Z         "int": {
2026-06-22T02:37:07.3980041Z           "complete": false,
2026-06-22T02:37:07.3980150Z           "evidence": []
2026-06-22T02:37:07.3980252Z         },
2026-06-22T02:37:07.3980365Z         "unit": {
2026-06-22T02:37:07.3980475Z           "complete": true,
2026-06-22T02:37:07.3980590Z           "evidence": [
2026-06-22T02:37:07.3980693Z             {
2026-06-22T02:37:07.3980828Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:37:07.3980942Z               "line": 94
2026-06-22T02:37:07.3981051Z             },
2026-06-22T02:37:07.3981151Z             {
2026-06-22T02:37:07.3981283Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:37:07.3981396Z               "line": 111
2026-06-22T02:37:07.3981506Z             },
2026-06-22T02:37:07.3981612Z             {
2026-06-22T02:37:07.3981748Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:37:07.3981860Z               "line": 124
2026-06-22T02:37:07.3981964Z             },
2026-06-22T02:37:07.3982073Z             {
2026-06-22T02:37:07.3982207Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:37:07.3982422Z               "line": 134
2026-06-22T02:37:07.3982531Z             },
2026-06-22T02:37:07.3982641Z             {
2026-06-22T02:37:07.3982770Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:37:07.3982884Z               "line": 144
2026-06-22T02:37:07.3982989Z             },
2026-06-22T02:37:07.3983090Z             {
2026-06-22T02:37:07.3983222Z               "path": "crates/spt-proto/src/id.rs",
2026-06-22T02:37:07.3983337Z               "line": 156
2026-06-22T02:37:07.3983429Z             },
2026-06-22T02:37:07.3983527Z             {
2026-06-22T02:37:07.3983676Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.3983904Z               "line": 746
2026-06-22T02:37:07.3984008Z             },
2026-06-22T02:37:07.3984113Z             {
2026-06-22T02:37:07.3984263Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.3984368Z               "line": 309
2026-06-22T02:37:07.3984479Z             }
2026-06-22T02:37:07.3984573Z           ]
2026-06-22T02:37:07.3984673Z         }
2026-06-22T02:37:07.3984779Z       }
2026-06-22T02:37:07.3984878Z     },
2026-06-22T02:37:07.3984988Z     {
2026-06-22T02:37:07.3985122Z       "id": "REQ-HAZARD-INBOX-NO-DOUBLE",
2026-06-22T02:37:07.3985279Z       "title": "No double-delivery via legacy inbox (4.5)",
2026-06-22T02:37:07.3985389Z       "requiredStages": [
2026-06-22T02:37:07.3985494Z         "impl",
2026-06-22T02:37:07.3985608Z         "unit"
2026-06-22T02:37:07.3985709Z       ],
2026-06-22T02:37:07.3985817Z       "stages": {
2026-06-22T02:37:07.3985923Z         "doc": {
2026-06-22T02:37:07.3986052Z           "complete": false,
2026-06-22T02:37:07.3986166Z           "evidence": []
2026-06-22T02:37:07.3986272Z         },
2026-06-22T02:37:07.3986381Z         "impl": {
2026-06-22T02:37:07.3986489Z           "complete": true,
2026-06-22T02:37:07.3986603Z           "evidence": [
2026-06-22T02:37:07.3986708Z             {
2026-06-22T02:37:07.3986853Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.3986964Z               "line": 128
2026-06-22T02:37:07.3987060Z             }
2026-06-22T02:37:07.3987168Z           ]
2026-06-22T02:37:07.3987269Z         },
2026-06-22T02:37:07.3987369Z         "int": {
2026-06-22T02:37:07.3987478Z           "complete": false,
2026-06-22T02:37:07.3987589Z           "evidence": []
2026-06-22T02:37:07.3987689Z         },
2026-06-22T02:37:07.3987793Z         "unit": {
2026-06-22T02:37:07.3987899Z           "complete": true,
2026-06-22T02:37:07.3988013Z           "evidence": [
2026-06-22T02:37:07.3988117Z             {
2026-06-22T02:37:07.3988262Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.3988375Z               "line": 205
2026-06-22T02:37:07.3988480Z             }
2026-06-22T02:37:07.3988581Z           ]
2026-06-22T02:37:07.3988689Z         }
2026-06-22T02:37:07.3988790Z       }
2026-06-22T02:37:07.3988896Z     },
2026-06-22T02:37:07.3989080Z     {
2026-06-22T02:37:07.3989225Z       "id": "REQ-HAZARD-INFO-JSON-TORN-READ",
2026-06-22T02:37:07.3989408Z       "title": "State-file reads tolerate concurrent writes (1.2)",
2026-06-22T02:37:07.3989514Z       "requiredStages": [
2026-06-22T02:37:07.3989624Z         "impl",
2026-06-22T02:37:07.3989723Z         "unit"
2026-06-22T02:37:07.3989829Z       ],
2026-06-22T02:37:07.3989934Z       "stages": {
2026-06-22T02:37:07.3990042Z         "doc": {
2026-06-22T02:37:07.3990149Z           "complete": false,
2026-06-22T02:37:07.3990263Z           "evidence": []
2026-06-22T02:37:07.3990362Z         },
2026-06-22T02:37:07.3990463Z         "impl": {
2026-06-22T02:37:07.3990586Z           "complete": true,
2026-06-22T02:37:07.3990696Z           "evidence": [
2026-06-22T02:37:07.3990797Z             {
2026-06-22T02:37:07.3990945Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3991054Z               "line": 367
2026-06-22T02:37:07.3991164Z             },
2026-06-22T02:37:07.3991268Z             {
2026-06-22T02:37:07.3991521Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3994347Z               "line": 378
2026-06-22T02:37:07.3994483Z             },
2026-06-22T02:37:07.3994597Z             {
2026-06-22T02:37:07.3994747Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3994875Z               "line": 396
2026-06-22T02:37:07.3994972Z             }
2026-06-22T02:37:07.3995076Z           ]
2026-06-22T02:37:07.3995171Z         },
2026-06-22T02:37:07.3995273Z         "int": {
2026-06-22T02:37:07.3995387Z           "complete": false,
2026-06-22T02:37:07.3995491Z           "evidence": []
2026-06-22T02:37:07.3995597Z         },
2026-06-22T02:37:07.3995844Z         "unit": {
2026-06-22T02:37:07.3995954Z           "complete": true,
2026-06-22T02:37:07.3996063Z           "evidence": [
2026-06-22T02:37:07.3996163Z             {
2026-06-22T02:37:07.3996307Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3996416Z               "line": 420
2026-06-22T02:37:07.3996527Z             },
2026-06-22T02:37:07.3996631Z             {
2026-06-22T02:37:07.3996774Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3996885Z               "line": 441
2026-06-22T02:37:07.3996979Z             },
2026-06-22T02:37:07.3997082Z             {
2026-06-22T02:37:07.3997216Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3997319Z               "line": 811
2026-06-22T02:37:07.3997423Z             },
2026-06-22T02:37:07.3997524Z             {
2026-06-22T02:37:07.3997662Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3997757Z               "line": 822
2026-06-22T02:37:07.3997863Z             },
2026-06-22T02:37:07.3997963Z             {
2026-06-22T02:37:07.3998101Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.3998201Z               "line": 835
2026-06-22T02:37:07.3998301Z             }
2026-06-22T02:37:07.3998406Z           ]
2026-06-22T02:37:07.3998507Z         }
2026-06-22T02:37:07.3998616Z       }
2026-06-22T02:37:07.3998721Z     },
2026-06-22T02:37:07.3998826Z     {
2026-06-22T02:37:07.3999040Z       "id": "REQ-HAZARD-INJECT-CONTROL-COEXIST",
2026-06-22T02:37:07.4006375Z       "title": "SPINE INVARIANT (v0.13.0 keystone): the broker must accept INJECTED keystrokes into an spt-hosted PTY (the v0.11.0 raw direct-inject today; the ADR-0022 translation-binary choreography tomorrow) WHILE a live `spt rc` controller is attached to the SAME PTY, without (a) the operator losing control, (b) the endpoint latching ONLINE+CONTROLLED, or (c) the broker wedging. The injection inlet is PERMANENT — spt-claude-code requires keystroke injection — so this is root-caused + fixed at the PTY-injection layer, IN STEP with the ADR-0022 delivery redesign that formalizes the inlet. REOPENS the wedge facet of REQ-HAZARD-ATTACH-WEDGE: the v0.12.1 prove-don't-change covered only DEAD-CHILD backpressure, NOT the injection trigger (operator's signal — one injected keystroke succeeds, the next wedges → the single-threaded broker parks on a blocking PTY/loopback write after injection-induced harness output). REPRO-FIRST on the real dummy-harness fixture (NO theory): instrument to nail the exact blocking call before any fix. Fix candidates: non-blocking/fail-fast PTY write, split input/output, bounded-evicting. Mechanism shared with W2 — spt-core owns EVERY PTY write and applies an injected sequence ATOMICALLY (controller input buffered during the sequence, flushed after) so a stash/restore can't be clobbered. CONFIRMED ROOT (doyle /diagnose 2026-06-19, code-grounded): Broker::append (broker.rs:205-227) fans each live output chunk to the CONTROLLER on a SYNCHRONOUS BLOCKING write_frame held inline in the session's drain thread (the 'authoritative, advances delivered_through' path, D4-1), while VIEWERS use a dedicated writer thread + bounded evicting sync_channel (add_viewer:273 / viewer_writer) that can never stall the drain. So a slow/backed-up controller socket — or the full 64KB loopback duplex (the ATTACH-WEDGE buffer) — BLOCKS the drain thread → output stalls → keystroke echoes stall (PERCEIVED input lag) → unrecoverable wedge when the consumer never drains. TRIGGERS ON NORMAL INTERACTIVE rc USE under heavy harness output (TUI redraw), NOT only message injection — same root, wider repro. FIX DIRECTION: move controller delivery off the drain thread onto a dedicated writer (the viewer_writer pattern) BUT preserve the authoritative cursor — block the WRITER thread (not the drain), bound the wedge (deadline → detach/mark-gone, never park forever), never silently evict the operator's authoritative view. (v0.13.0)",
2026-06-22T02:37:07.4006676Z       "requiredStages": [
2026-06-22T02:37:07.4006881Z         "impl",
2026-06-22T02:37:07.4006986Z         "unit",
2026-06-22T02:37:07.4007087Z         "int"
2026-06-22T02:37:07.4007191Z       ],
2026-06-22T02:37:07.4007291Z       "stages": {
2026-06-22T02:37:07.4007402Z         "doc": {
2026-06-22T02:37:07.4007506Z           "complete": false,
2026-06-22T02:37:07.4007615Z           "evidence": []
2026-06-22T02:37:07.4007728Z         },
2026-06-22T02:37:07.4007832Z         "impl": {
2026-06-22T02:37:07.4007946Z           "complete": true,
2026-06-22T02:37:07.4008046Z           "evidence": [
2026-06-22T02:37:07.4008147Z             {
2026-06-22T02:37:07.4008302Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4008409Z               "line": 321
2026-06-22T02:37:07.4008509Z             },
2026-06-22T02:37:07.4008613Z             {
2026-06-22T02:37:07.4008761Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4008875Z               "line": 758
2026-06-22T02:37:07.4009067Z             },
2026-06-22T02:37:07.4009171Z             {
2026-06-22T02:37:07.4009319Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4009438Z               "line": 1027
2026-06-22T02:37:07.4009548Z             }
2026-06-22T02:37:07.4009649Z           ]
2026-06-22T02:37:07.4009748Z         },
2026-06-22T02:37:07.4009853Z         "int": {
2026-06-22T02:37:07.4009973Z           "complete": true,
2026-06-22T02:37:07.4010091Z           "evidence": [
2026-06-22T02:37:07.4010197Z             {
2026-06-22T02:37:07.4010373Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.4010486Z               "line": 288
2026-06-22T02:37:07.4010591Z             },
2026-06-22T02:37:07.4010697Z             {
2026-06-22T02:37:07.4010857Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.4010968Z               "line": 414
2026-06-22T02:37:07.4011078Z             }
2026-06-22T02:37:07.4011182Z           ]
2026-06-22T02:37:07.4011288Z         },
2026-06-22T02:37:07.4011393Z         "unit": {
2026-06-22T02:37:07.4011516Z           "complete": true,
2026-06-22T02:37:07.4011617Z           "evidence": [
2026-06-22T02:37:07.4011726Z             {
2026-06-22T02:37:07.4011874Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4011989Z               "line": 2581
2026-06-22T02:37:07.4012098Z             }
2026-06-22T02:37:07.4012204Z           ]
2026-06-22T02:37:07.4012313Z         }
2026-06-22T02:37:07.4012413Z       }
2026-06-22T02:37:07.4012518Z     },
2026-06-22T02:37:07.4012618Z     {
2026-06-22T02:37:07.4012784Z       "id": "REQ-HAZARD-INPUT-ACK-BACKPRESSURE",
2026-06-22T02:37:07.4019889Z       "title": "A FLOOD of operator input on one brain↔broker connection deadlocks the broker PERMANENTLY (entire broker — no new/existing attach; the controller stays latched because the per-conn handler can't process the detach). ROOT (doyle /diagnose, code-grounded + HITL capture, the v0.13.0 P1 ctrl+V re-open): `serve_attach` processes a whole `NetStreamData` batch of N operator `Input` records in its inner `for rec in decoder.push()` loop, calling `brain.send_effect(op_id, &bytes)` N times WITHOUT returning to `read_event()` — so the brain writes N `KIND_INPUT` frames back-to-back and drains nothing. The broker's single-threaded per-conn handler answers EACH with `send_frame(applied_envelope)` on the SAME conn (B5 exactly-once ack, KNOWN-HAZARDS 7.2). With the brain not reading, the broker→brain return direction fills (~10 frames = the IPC pipe buffer) → `send_frame` BLOCKS → the handler stops reading → the brain's writes block too → mutual full-duplex DEADLOCK. Capture pinned it: 11 input frames, write_input 11/11 (P0 holds — the PTY write is fine), ack send START=11 / END=10 (frame #11's applied-ack never returns). Same class as the v0.12.1 L0 two-conn split. Windows Terminal's ctrl+V paste accelerator was the trigger (injects the clipboard as a char-by-char key flood) but the deadlock is generic to ANY input flood, NOT ctrl+V-specific and NOT a P0 (PTY-write) or W1 (output-drain) regression. The applied-ack is load-bearing ONLY for `shellchan` (one-at-a-time spool delivery WAITS on `BrokerEvent::Applied`); `serve_attach` DISCARDS it (the operator/rc path is fire-and-forward, op_id for dedup only, never gates on the ack). FIX (doyle-approved): CONDITIONAL ACK — `InputReq` gains `ack: bool` (serde default = true, N-1-safe: an older brain's input still acks = today's behavior). `serve_attach`'s operator path calls `send_effect_no_ack` (ack=false) → `dispatch_input` writes NO applied frame → the per-conn handler never writes back while servicing the flood → it always drains → no deadlock (cures ANY input flood). `shellchan` keeps `send_effect` (ack=true) and its `Applied`-wait. Exactly-once PRESERVED: the broker still dedups by (session, op_id) at the applied-set regardless of the ack. N-1 caveat: an OLD resident broker (self-update window) ignores `ack=false` → still acks → the deadlock persists until a broker restart (inherent KNOWN-HAZARDS 7.9 broker-resident-wire-change class). (v0.13.0)",
2026-06-22T02:37:07.4020289Z       "requiredStages": [
2026-06-22T02:37:07.4020404Z         "doc",
2026-06-22T02:37:07.4020505Z         "impl",
2026-06-22T02:37:07.4020614Z         "unit",
2026-06-22T02:37:07.4020713Z         "int"
2026-06-22T02:37:07.4020820Z       ],
2026-06-22T02:37:07.4020933Z       "stages": {
2026-06-22T02:37:07.4021037Z         "doc": {
2026-06-22T02:37:07.4021160Z           "complete": true,
2026-06-22T02:37:07.4021271Z           "evidence": [
2026-06-22T02:37:07.4021375Z             {
2026-06-22T02:37:07.4021509Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4021609Z               "line": 454
2026-06-22T02:37:07.4021714Z             }
2026-06-22T02:37:07.4021820Z           ]
2026-06-22T02:37:07.4021924Z         },
2026-06-22T02:37:07.4022028Z         "impl": {
2026-06-22T02:37:07.4022139Z           "complete": true,
2026-06-22T02:37:07.4022244Z           "evidence": [
2026-06-22T02:37:07.4022353Z             {
2026-06-22T02:37:07.4022506Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.4022620Z               "line": 355
2026-06-22T02:37:07.4022725Z             },
2026-06-22T02:37:07.4022826Z             {
2026-06-22T02:37:07.4022973Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4023078Z               "line": 493
2026-06-22T02:37:07.4023193Z             },
2026-06-22T02:37:07.4023286Z             {
2026-06-22T02:37:07.4023430Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4023542Z               "line": 1740
2026-06-22T02:37:07.4023646Z             },
2026-06-22T02:37:07.4023752Z             {
2026-06-22T02:37:07.4023890Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.4023999Z               "line": 347
2026-06-22T02:37:07.4024095Z             }
2026-06-22T02:37:07.4024195Z           ]
2026-06-22T02:37:07.4024304Z         },
2026-06-22T02:37:07.4024400Z         "int": {
2026-06-22T02:37:07.4024524Z           "complete": true,
2026-06-22T02:37:07.4024633Z           "evidence": [
2026-06-22T02:37:07.4024739Z             {
2026-06-22T02:37:07.4024882Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.4024986Z               "line": 737
2026-06-22T02:37:07.4025096Z             },
2026-06-22T02:37:07.4025187Z             {
2026-06-22T02:37:07.4025411Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.4025521Z               "line": 854
2026-06-22T02:37:07.4025626Z             },
2026-06-22T02:37:07.4025731Z             {
2026-06-22T02:37:07.4025902Z               "path": "crates/spt-daemon/tests/input_ack_deadlock.rs",
2026-06-22T02:37:07.4026008Z               "line": 266
2026-06-22T02:37:07.4026102Z             }
2026-06-22T02:37:07.4026210Z           ]
2026-06-22T02:37:07.4026306Z         },
2026-06-22T02:37:07.4026414Z         "unit": {
2026-06-22T02:37:07.4026518Z           "complete": true,
2026-06-22T02:37:07.4026633Z           "evidence": [
2026-06-22T02:37:07.4026832Z             {
2026-06-22T02:37:07.4026977Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.4027091Z               "line": 1046
2026-06-22T02:37:07.4027200Z             },
2026-06-22T02:37:07.4027306Z             {
2026-06-22T02:37:07.4027448Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.4027568Z               "line": 1080
2026-06-22T02:37:07.4027672Z             }
2026-06-22T02:37:07.4027767Z           ]
2026-06-22T02:37:07.4027878Z         }
2026-06-22T02:37:07.4027983Z       }
2026-06-22T02:37:07.4028082Z     },
2026-06-22T02:37:07.4028183Z     {
2026-06-22T02:37:07.4028330Z       "id": "REQ-HAZARD-INSTANT-UNDERFLOW",
2026-06-22T02:37:07.4028925Z       "title": "Scheduling never subtracts a Duration from Instant::now() (underflow-panics on a host booted more recently than the offset); 'due now / never run' is Option<Instant>=None gated on forward duration_since only (5.9)",
2026-06-22T02:37:07.4029132Z       "requiredStages": [
2026-06-22T02:37:07.4029243Z         "impl",
2026-06-22T02:37:07.4029347Z         "unit"
2026-06-22T02:37:07.4029452Z       ],
2026-06-22T02:37:07.4029562Z       "stages": {
2026-06-22T02:37:07.4029666Z         "doc": {
2026-06-22T02:37:07.4029786Z           "complete": false,
2026-06-22T02:37:07.4029896Z           "evidence": []
2026-06-22T02:37:07.4030005Z         },
2026-06-22T02:37:07.4030111Z         "impl": {
2026-06-22T02:37:07.4030215Z           "complete": true,
2026-06-22T02:37:07.4030320Z           "evidence": [
2026-06-22T02:37:07.4030420Z             {
2026-06-22T02:37:07.4030568Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4030677Z               "line": 759
2026-06-22T02:37:07.4030779Z             }
2026-06-22T02:37:07.4030882Z           ]
2026-06-22T02:37:07.4030987Z         },
2026-06-22T02:37:07.4031089Z         "int": {
2026-06-22T02:37:07.4031193Z           "complete": false,
2026-06-22T02:37:07.4031302Z           "evidence": []
2026-06-22T02:37:07.4031408Z         },
2026-06-22T02:37:07.4031531Z         "unit": {
2026-06-22T02:37:07.4031644Z           "complete": true,
2026-06-22T02:37:07.4031750Z           "evidence": [
2026-06-22T02:37:07.4031855Z             {
2026-06-22T02:37:07.4032007Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4032112Z               "line": 873
2026-06-22T02:37:07.4032221Z             }
2026-06-22T02:37:07.4032326Z           ]
2026-06-22T02:37:07.4032432Z         }
2026-06-22T02:37:07.4032536Z       }
2026-06-22T02:37:07.4032631Z     },
2026-06-22T02:37:07.4032723Z     {
2026-06-22T02:37:07.4032889Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-LIVENESS-GATE",
2026-06-22T02:37:07.4035222Z       "title": "B5: `spt daemon start` does NOT revive phantom Psyches for dead-but-online-latched perches. Today reconcile_once (livehost.rs:285) spawns a Psyche per status=online live_agent perch at boot WITHOUT verifying the harness child / {id}-psyche is actually alive — so a Cold start after an unclean stop revives N psyches for N dead-but-latched perches (3 psyches for 3 dead perches). FIX: gate the boot psyche-spawn on real child-liveness — a perch with NO live broker session (the B2 reconcile signal) is marked OFFLINE at boot instead of hosted, so a dead-harness perch is never revived. Shares the B2 reconcile loop (this is its boot-gate arm); composes with B2's honest latch. Also closes wall-a's psyche_host_error gap (residency-confirm does not run at boot tick-1, livehost.rs:395-441 / 257-263). (v0.12.0)",
2026-06-22T02:37:07.4035470Z       "requiredStages": [
2026-06-22T02:37:07.4035581Z         "impl",
2026-06-22T02:37:07.4035685Z         "unit",
2026-06-22T02:37:07.4035790Z         "int"
2026-06-22T02:37:07.4035891Z       ],
2026-06-22T02:37:07.4035995Z       "stages": {
2026-06-22T02:37:07.4036100Z         "doc": {
2026-06-22T02:37:07.4036215Z           "complete": false,
2026-06-22T02:37:07.4036333Z           "evidence": []
2026-06-22T02:37:07.4036433Z         },
2026-06-22T02:37:07.4036545Z         "impl": {
2026-06-22T02:37:07.4036761Z           "complete": true,
2026-06-22T02:37:07.4036867Z           "evidence": [
2026-06-22T02:37:07.4036974Z             {
2026-06-22T02:37:07.4037121Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4037237Z               "line": 705
2026-06-22T02:37:07.4037341Z             }
2026-06-22T02:37:07.4037450Z           ]
2026-06-22T02:37:07.4037551Z         },
2026-06-22T02:37:07.4037660Z         "int": {
2026-06-22T02:37:07.4037779Z           "complete": true,
2026-06-22T02:37:07.4037876Z           "evidence": [
2026-06-22T02:37:07.4037989Z             {
2026-06-22T02:37:07.4038152Z               "path": "crates/spt/tests/livehost_bootgate_e2e.rs",
2026-06-22T02:37:07.4038261Z               "line": 24
2026-06-22T02:37:07.4038370Z             }
2026-06-22T02:37:07.4038467Z           ]
2026-06-22T02:37:07.4038576Z         },
2026-06-22T02:37:07.4038680Z         "unit": {
2026-06-22T02:37:07.4038791Z           "complete": true,
2026-06-22T02:37:07.4038895Z           "evidence": [
2026-06-22T02:37:07.4039101Z             {
2026-06-22T02:37:07.4039252Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4039361Z               "line": 918
2026-06-22T02:37:07.4039471Z             }
2026-06-22T02:37:07.4039569Z           ]
2026-06-22T02:37:07.4039669Z         }
2026-06-22T02:37:07.4039774Z       }
2026-06-22T02:37:07.4039880Z     },
2026-06-22T02:37:07.4039983Z     {
2026-06-22T02:37:07.4040118Z       "id": "REQ-HAZARD-LIVEHOST-BOOT-RACE",
2026-06-22T02:37:07.4043659Z       "title": "The brain's daemon-hosted Psyche lifecycle surfaces a host-FAILURE on the live perch (harness-diagnosable) and runs net-INDEPENDENTLY. When reconcile_once→host_one→spawn_psyche fails for a state=live_agent+status=online endpoint (e.g. the adapter's psyche binary absent from its install dir, REQ-INSTALL-11), the failure MUST be written to the perch info.json as a CURRENT-STATE field (reason + ts + attempt count; overwritten each 5s retry, CLEARED on successful host) and surfaced by `spt endpoint list`/status — never left as an eprintln on the brain's invisible stderr where a harness reading only perch state is blind. status=online stays authoritative (agent reachable; only the Psyche is missing — brain-restart rehydrate legitimately has online-without-Psyche windows), so this is a SEPARATE psyche-host-health field, never a status de-stamp. Net-independence is a locked-in invariant: spawn_live_host (brainproc.rs:230) reaches the reconcile and hosts the Psyche on a net-less/unpaired/peer-pump-STALLED node, proven by a REAL detached-daemon E2E (real broker→brain-child, real api seed+listen, real install-dir psyche binary). spt-core SURFACES the failure; the adapter owns fixing its packaging.",
2026-06-22T02:37:07.4043816Z       "requiredStages": [
2026-06-22T02:37:07.4043918Z         "impl",
2026-06-22T02:37:07.4044026Z         "unit",
2026-06-22T02:37:07.4044136Z         "int"
2026-06-22T02:37:07.4044238Z       ],
2026-06-22T02:37:07.4044340Z       "stages": {
2026-06-22T02:37:07.4044449Z         "doc": {
2026-06-22T02:37:07.4044574Z           "complete": false,
2026-06-22T02:37:07.4044686Z           "evidence": []
2026-06-22T02:37:07.4044795Z         },
2026-06-22T02:37:07.4044896Z         "impl": {
2026-06-22T02:37:07.4045005Z           "complete": true,
2026-06-22T02:37:07.4045119Z           "evidence": [
2026-06-22T02:37:07.4045329Z             {
2026-06-22T02:37:07.4045487Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4045597Z               "line": 391
2026-06-22T02:37:07.4045706Z             },
2026-06-22T02:37:07.4045802Z             {
2026-06-22T02:37:07.4045945Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.4046058Z               "line": 343
2026-06-22T02:37:07.4046155Z             },
2026-06-22T02:37:07.4046259Z             {
2026-06-22T02:37:07.4046383Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4046489Z               "line": 1750
2026-06-22T02:37:07.4046593Z             },
2026-06-22T02:37:07.4046795Z             {
2026-06-22T02:37:07.4046926Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4047037Z               "line": 3191
2026-06-22T02:37:07.4047142Z             }
2026-06-22T02:37:07.4047241Z           ]
2026-06-22T02:37:07.4047345Z         },
2026-06-22T02:37:07.4047459Z         "int": {
2026-06-22T02:37:07.4047577Z           "complete": true,
2026-06-22T02:37:07.4047691Z           "evidence": [
2026-06-22T02:37:07.4047792Z             {
2026-06-22T02:37:07.4047953Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:37:07.4048064Z               "line": 353
2026-06-22T02:37:07.4048173Z             },
2026-06-22T02:37:07.4048282Z             {
2026-06-22T02:37:07.4048440Z               "path": "crates/spt/tests/livehost_psyche_fail_e2e.rs",
2026-06-22T02:37:07.4048545Z               "line": 23
2026-06-22T02:37:07.4048635Z             }
2026-06-22T02:37:07.4048736Z           ]
2026-06-22T02:37:07.4048835Z         },
2026-06-22T02:37:07.4049023Z         "unit": {
2026-06-22T02:37:07.4049131Z           "complete": true,
2026-06-22T02:37:07.4049240Z           "evidence": [
2026-06-22T02:37:07.4049347Z             {
2026-06-22T02:37:07.4049484Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.4049594Z               "line": 743
2026-06-22T02:37:07.4049700Z             },
2026-06-22T02:37:07.4049808Z             {
2026-06-22T02:37:07.4049930Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4050041Z               "line": 7863
2026-06-22T02:37:07.4050148Z             }
2026-06-22T02:37:07.4050252Z           ]
2026-06-22T02:37:07.4050349Z         }
2026-06-22T02:37:07.4050449Z       }
2026-06-22T02:37:07.4050553Z     },
2026-06-22T02:37:07.4050654Z     {
2026-06-22T02:37:07.4050787Z       "id": "REQ-HAZARD-LIVEHOST-NONRESIDENT",
2026-06-22T02:37:07.4054062Z       "title": "A daemon-hosted Psyche that spawns then EXITS IMMEDIATELY is a host failure, surfaced like a spawn failure (closes the v0.8.1 residual masking): the REQ-HAZARD-LIVEHOST-BOOT-RACE signal stamps `psyche_host_error` only when `spawn_psyche` returns Err, NOT when the detached spawn() returns Ok but the child dies within moments (e.g. a bad-argv child exiting 2 — the F-009 case). That leaves the residual 'online + no Psyche + no cause' gap: the nested `{id}-psyche` info.json is written status=online with a real-but-DEAD pid and the PARENT perch carries NO psyche_host_error (perri's F-010: tasklist showed 0 host procs across the window while info.json read online). The host MUST confirm RESIDENCY — a hosted child not alive (or whose `{id}-psyche` perch never re-registers / has a dead pid) within N seconds of spawn is treated as a host failure: stamp the parent perch `psyche_host_error{reason:\"host not resident within <n>s (psyche perch missing/dead pid)\"}` (and do not leave a phantom online nested perch). Closes the last masking gap the v0.8.1 fix left open. perri's F-010 (v0.8.1 dogfood). Sibling of REQ-HAZARD-LIVEHOST-BOOT-RACE.",
2026-06-22T02:37:07.4054224Z       "requiredStages": [
2026-06-22T02:37:07.4054328Z         "impl",
2026-06-22T02:37:07.4054435Z         "unit",
2026-06-22T02:37:07.4054539Z         "int"
2026-06-22T02:37:07.4054639Z       ],
2026-06-22T02:37:07.4054739Z       "stages": {
2026-06-22T02:37:07.4054845Z         "doc": {
2026-06-22T02:37:07.4054962Z           "complete": false,
2026-06-22T02:37:07.4055190Z           "evidence": []
2026-06-22T02:37:07.4055298Z         },
2026-06-22T02:37:07.4055403Z         "impl": {
2026-06-22T02:37:07.4055509Z           "complete": true,
2026-06-22T02:37:07.4055632Z           "evidence": [
2026-06-22T02:37:07.4055732Z             {
2026-06-22T02:37:07.4055889Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4056003Z               "line": 64
2026-06-22T02:37:07.4056109Z             },
2026-06-22T02:37:07.4056213Z             {
2026-06-22T02:37:07.4056357Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4056467Z               "line": 78
2026-06-22T02:37:07.4056667Z             },
2026-06-22T02:37:07.4056772Z             {
2026-06-22T02:37:07.4056919Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4057040Z               "line": 170
2026-06-22T02:37:07.4057143Z             },
2026-06-22T02:37:07.4057248Z             {
2026-06-22T02:37:07.4057402Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4057510Z               "line": 185
2026-06-22T02:37:07.4057617Z             },
2026-06-22T02:37:07.4057721Z             {
2026-06-22T02:37:07.4057858Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4057962Z               "line": 195
2026-06-22T02:37:07.4058066Z             },
2026-06-22T02:37:07.4058170Z             {
2026-06-22T02:37:07.4058309Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4058423Z               "line": 205
2026-06-22T02:37:07.4058527Z             },
2026-06-22T02:37:07.4058634Z             {
2026-06-22T02:37:07.4058780Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4058885Z               "line": 294
2026-06-22T02:37:07.4059067Z             },
2026-06-22T02:37:07.4059166Z             {
2026-06-22T02:37:07.4059310Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4059420Z               "line": 308
2026-06-22T02:37:07.4059534Z             },
2026-06-22T02:37:07.4059634Z             {
2026-06-22T02:37:07.4059777Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4059898Z               "line": 377
2026-06-22T02:37:07.4059997Z             },
2026-06-22T02:37:07.4060106Z             {
2026-06-22T02:37:07.4060255Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4060363Z               "line": 437
2026-06-22T02:37:07.4060462Z             },
2026-06-22T02:37:07.4060567Z             {
2026-06-22T02:37:07.4060704Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4060813Z               "line": 455
2026-06-22T02:37:07.4060914Z             }
2026-06-22T02:37:07.4061018Z           ]
2026-06-22T02:37:07.4061128Z         },
2026-06-22T02:37:07.4061234Z         "int": {
2026-06-22T02:37:07.4061338Z           "complete": true,
2026-06-22T02:37:07.4061452Z           "evidence": [
2026-06-22T02:37:07.4061557Z             {
2026-06-22T02:37:07.4061728Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:37:07.4061839Z               "line": 45
2026-06-22T02:37:07.4061943Z             },
2026-06-22T02:37:07.4062043Z             {
2026-06-22T02:37:07.4062197Z               "path": "crates/spt/tests/livehost_bootrace_e2e.rs",
2026-06-22T02:37:07.4062311Z               "line": 354
2026-06-22T02:37:07.4062411Z             },
2026-06-22T02:37:07.4062516Z             {
2026-06-22T02:37:07.4062677Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T02:37:07.4062788Z               "line": 31
2026-06-22T02:37:07.4062897Z             }
2026-06-22T02:37:07.4063001Z           ]
2026-06-22T02:37:07.4063108Z         },
2026-06-22T02:37:07.4063216Z         "unit": {
2026-06-22T02:37:07.4063334Z           "complete": true,
2026-06-22T02:37:07.4063439Z           "evidence": [
2026-06-22T02:37:07.4063536Z             {
2026-06-22T02:37:07.4063691Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4063925Z               "line": 727
2026-06-22T02:37:07.4064031Z             }
2026-06-22T02:37:07.4064136Z           ]
2026-06-22T02:37:07.4064236Z         }
2026-06-22T02:37:07.4064336Z       }
2026-06-22T02:37:07.4064441Z     },
2026-06-22T02:37:07.4064551Z     {
2026-06-22T02:37:07.4064680Z       "id": "REQ-HAZARD-LOCAL-API-AUTH",
2026-06-22T02:37:07.4064917Z       "title": "Every local `api` mutation authenticated to an endpoint/session (codex #13)",
2026-06-22T02:37:07.4065033Z       "requiredStages": [
2026-06-22T02:37:07.4065146Z         "impl",
2026-06-22T02:37:07.4065256Z         "unit"
2026-06-22T02:37:07.4065353Z       ],
2026-06-22T02:37:07.4065565Z       "stages": {
2026-06-22T02:37:07.4065675Z         "doc": {
2026-06-22T02:37:07.4065801Z           "complete": false,
2026-06-22T02:37:07.4065910Z           "evidence": []
2026-06-22T02:37:07.4066016Z         },
2026-06-22T02:37:07.4066125Z         "impl": {
2026-06-22T02:37:07.4066239Z           "complete": true,
2026-06-22T02:37:07.4066350Z           "evidence": [
2026-06-22T02:37:07.4066454Z             {
2026-06-22T02:37:07.4066593Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:37:07.4066693Z               "line": 14
2026-06-22T02:37:07.4066802Z             },
2026-06-22T02:37:07.4066913Z             {
2026-06-22T02:37:07.4067041Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.4067160Z               "line": 566
2026-06-22T02:37:07.4067261Z             }
2026-06-22T02:37:07.4067409Z           ]
2026-06-22T02:37:07.4067508Z         },
2026-06-22T02:37:07.4067619Z         "int": {
2026-06-22T02:37:07.4067742Z           "complete": false,
2026-06-22T02:37:07.4067857Z           "evidence": []
2026-06-22T02:37:07.4067962Z         },
2026-06-22T02:37:07.4068066Z         "unit": {
2026-06-22T02:37:07.4068182Z           "complete": true,
2026-06-22T02:37:07.4068291Z           "evidence": [
2026-06-22T02:37:07.4068380Z             {
2026-06-22T02:37:07.4068542Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:37:07.4068673Z               "line": 130
2026-06-22T02:37:07.4068777Z             },
2026-06-22T02:37:07.4068869Z             {
2026-06-22T02:37:07.4069092Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:37:07.4069194Z               "line": 138
2026-06-22T02:37:07.4069294Z             },
2026-06-22T02:37:07.4069398Z             {
2026-06-22T02:37:07.4069551Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:37:07.4069693Z               "line": 146
2026-06-22T02:37:07.4069808Z             },
2026-06-22T02:37:07.4069917Z             {
2026-06-22T02:37:07.4070046Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:37:07.4070157Z               "line": 154
2026-06-22T02:37:07.4070251Z             },
2026-06-22T02:37:07.4070342Z             {
2026-06-22T02:37:07.4070496Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:37:07.4070604Z               "line": 162
2026-06-22T02:37:07.4070729Z             },
2026-06-22T02:37:07.4070829Z             {
2026-06-22T02:37:07.4070966Z               "path": "crates/spt/src/api/auth.rs",
2026-06-22T02:37:07.4071075Z               "line": 170
2026-06-22T02:37:07.4071184Z             }
2026-06-22T02:37:07.4071292Z           ]
2026-06-22T02:37:07.4071397Z         }
2026-06-22T02:37:07.4071508Z       }
2026-06-22T02:37:07.4071612Z     },
2026-06-22T02:37:07.4071698Z     {
2026-06-22T02:37:07.4071836Z       "id": "REQ-HAZARD-PAIR-RATE-LIMIT",
2026-06-22T02:37:07.4072733Z       "title": "Subnet-global pairing rate limit: one active ceremony per subnet, shared attempt counter, exponential backoff — a public pre-trust relay + multiple seed-holders otherwise enables distributed SPAKE2 guessing (and ±1 TOTP window triples the valid-password space) (ADR-0005 #11)",
2026-06-22T02:37:07.4072871Z       "requiredStages": [
2026-06-22T02:37:07.4072976Z         "impl",
2026-06-22T02:37:07.4073081Z         "unit"
2026-06-22T02:37:07.4073190Z       ],
2026-06-22T02:37:07.4073291Z       "stages": {
2026-06-22T02:37:07.4073509Z         "doc": {
2026-06-22T02:37:07.4073620Z           "complete": false,
2026-06-22T02:37:07.4073734Z           "evidence": []
2026-06-22T02:37:07.4073833Z         },
2026-06-22T02:37:07.4073947Z         "impl": {
2026-06-22T02:37:07.4074067Z           "complete": true,
2026-06-22T02:37:07.4074176Z           "evidence": [
2026-06-22T02:37:07.4074286Z             {
2026-06-22T02:37:07.4074453Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:37:07.4074567Z               "line": 34
2026-06-22T02:37:07.4074668Z             }
2026-06-22T02:37:07.4074777Z           ]
2026-06-22T02:37:07.4074882Z         },
2026-06-22T02:37:07.4075087Z         "int": {
2026-06-22T02:37:07.4075211Z           "complete": false,
2026-06-22T02:37:07.4075312Z           "evidence": []
2026-06-22T02:37:07.4075416Z         },
2026-06-22T02:37:07.4075516Z         "unit": {
2026-06-22T02:37:07.4075631Z           "complete": true,
2026-06-22T02:37:07.4075744Z           "evidence": [
2026-06-22T02:37:07.4075855Z             {
2026-06-22T02:37:07.4076026Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:37:07.4076139Z               "line": 188
2026-06-22T02:37:07.4076244Z             },
2026-06-22T02:37:07.4076352Z             {
2026-06-22T02:37:07.4076524Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:37:07.4076639Z               "line": 200
2026-06-22T02:37:07.4076747Z             },
2026-06-22T02:37:07.4076853Z             {
2026-06-22T02:37:07.4077010Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:37:07.4077119Z               "line": 211
2026-06-22T02:37:07.4077235Z             },
2026-06-22T02:37:07.4077339Z             {
2026-06-22T02:37:07.4077550Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:37:07.4077659Z               "line": 253
2026-06-22T02:37:07.4077767Z             },
2026-06-22T02:37:07.4077859Z             {
2026-06-22T02:37:07.4078039Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:37:07.4078155Z               "line": 277
2026-06-22T02:37:07.4078254Z             },
2026-06-22T02:37:07.4078349Z             {
2026-06-22T02:37:07.4078503Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:37:07.4078611Z               "line": 300
2026-06-22T02:37:07.4078708Z             },
2026-06-22T02:37:07.4078809Z             {
2026-06-22T02:37:07.4079044Z               "path": "crates/spt-net/src/net/pairing/ratelimit.rs",
2026-06-22T02:37:07.4079145Z               "line": 316
2026-06-22T02:37:07.4079247Z             }
2026-06-22T02:37:07.4079352Z           ]
2026-06-22T02:37:07.4079463Z         }
2026-06-22T02:37:07.4079562Z       }
2026-06-22T02:37:07.4079671Z     },
2026-06-22T02:37:07.4079768Z     {
2026-06-22T02:37:07.4079900Z       "id": "REQ-HAZARD-PAIR-SEED-ROTATION",
2026-06-22T02:37:07.4080459Z       "title": "Removing a node rotates the subnet seed (epoch bump) so an old node/old seed cannot rejoin; trust-store delete alone is NOT revocation because the seed is replicated to every trusted node (ADR-0005 #10)",
2026-06-22T02:37:07.4080573Z       "requiredStages": [
2026-06-22T02:37:07.4080693Z         "impl",
2026-06-22T02:37:07.4080797Z         "unit"
2026-06-22T02:37:07.4080902Z       ],
2026-06-22T02:37:07.4081018Z       "stages": {
2026-06-22T02:37:07.4081117Z         "doc": {
2026-06-22T02:37:07.4081236Z           "complete": false,
2026-06-22T02:37:07.4081342Z           "evidence": []
2026-06-22T02:37:07.4081450Z         },
2026-06-22T02:37:07.4081559Z         "impl": {
2026-06-22T02:37:07.4081664Z           "complete": true,
2026-06-22T02:37:07.4081786Z           "evidence": [
2026-06-22T02:37:07.4081890Z             {
2026-06-22T02:37:07.4082039Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4082148Z               "line": 29
2026-06-22T02:37:07.4082258Z             },
2026-06-22T02:37:07.4082363Z             {
2026-06-22T02:37:07.4082601Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4082716Z               "line": 174
2026-06-22T02:37:07.4082810Z             },
2026-06-22T02:37:07.4082916Z             {
2026-06-22T02:37:07.4083049Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4083159Z               "line": 194
2026-06-22T02:37:07.4083265Z             },
2026-06-22T02:37:07.4083373Z             {
2026-06-22T02:37:07.4083516Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4083617Z               "line": 222
2026-06-22T02:37:07.4083726Z             }
2026-06-22T02:37:07.4083831Z           ]
2026-06-22T02:37:07.4084036Z         },
2026-06-22T02:37:07.4084132Z         "int": {
2026-06-22T02:37:07.4084247Z           "complete": false,
2026-06-22T02:37:07.4084355Z           "evidence": []
2026-06-22T02:37:07.4084459Z         },
2026-06-22T02:37:07.4084569Z         "unit": {
2026-06-22T02:37:07.4084684Z           "complete": true,
2026-06-22T02:37:07.4084803Z           "evidence": [
2026-06-22T02:37:07.4084899Z             {
2026-06-22T02:37:07.4085041Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4085151Z               "line": 329
2026-06-22T02:37:07.4085256Z             },
2026-06-22T02:37:07.4085365Z             {
2026-06-22T02:37:07.4085490Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4085609Z               "line": 344
2026-06-22T02:37:07.4085718Z             },
2026-06-22T02:37:07.4085824Z             {
2026-06-22T02:37:07.4085966Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4086076Z               "line": 417
2026-06-22T02:37:07.4086187Z             },
2026-06-22T02:37:07.4086290Z             {
2026-06-22T02:37:07.4086434Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4086549Z               "line": 433
2026-06-22T02:37:07.4086657Z             },
2026-06-22T02:37:07.4086766Z             {
2026-06-22T02:37:07.4086903Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4087021Z               "line": 492
2026-06-22T02:37:07.4087126Z             },
2026-06-22T02:37:07.4087236Z             {
2026-06-22T02:37:07.4087365Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4087476Z               "line": 506
2026-06-22T02:37:07.4087580Z             },
2026-06-22T02:37:07.4087674Z             {
2026-06-22T02:37:07.4087809Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4087918Z               "line": 517
2026-06-22T02:37:07.4088023Z             },
2026-06-22T02:37:07.4088124Z             {
2026-06-22T02:37:07.4088252Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4088367Z               "line": 528
2026-06-22T02:37:07.4088476Z             }
2026-06-22T02:37:07.4088576Z           ]
2026-06-22T02:37:07.4088677Z         }
2026-06-22T02:37:07.4088782Z       }
2026-06-22T02:37:07.4088881Z     },
2026-06-22T02:37:07.4089068Z     {
2026-06-22T02:37:07.4089220Z       "id": "REQ-HAZARD-PAIR-TRANSCRIPT-BIND",
2026-06-22T02:37:07.4089907Z       "title": "Pairing transcript binds roles, both node pubkeys, subnet ID, seed epoch, TOTP time-step, and confirmation MACs — or unknown-key-share/reflection/wrong-subnet/replay pairing remain possible (ADR-0005 #12)",
2026-06-22T02:37:07.4090032Z       "requiredStages": [
2026-06-22T02:37:07.4090137Z         "impl",
2026-06-22T02:37:07.4090236Z         "unit"
2026-06-22T02:37:07.4090338Z       ],
2026-06-22T02:37:07.4090438Z       "stages": {
2026-06-22T02:37:07.4090546Z         "doc": {
2026-06-22T02:37:07.4090657Z           "complete": false,
2026-06-22T02:37:07.4090776Z           "evidence": []
2026-06-22T02:37:07.4090880Z         },
2026-06-22T02:37:07.4090991Z         "impl": {
2026-06-22T02:37:07.4091095Z           "complete": true,
2026-06-22T02:37:07.4091209Z           "evidence": [
2026-06-22T02:37:07.4091311Z             {
2026-06-22T02:37:07.4091462Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4091677Z               "line": 27
2026-06-22T02:37:07.4091772Z             },
2026-06-22T02:37:07.4091878Z             {
2026-06-22T02:37:07.4092038Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4092138Z               "line": 110
2026-06-22T02:37:07.4092248Z             },
2026-06-22T02:37:07.4092351Z             {
2026-06-22T02:37:07.4092508Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4092623Z               "line": 153
2026-06-22T02:37:07.4092727Z             },
2026-06-22T02:37:07.4092837Z             {
2026-06-22T02:37:07.4092981Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4093191Z               "line": 182
2026-06-22T02:37:07.4093285Z             },
2026-06-22T02:37:07.4093380Z             {
2026-06-22T02:37:07.4093557Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4093652Z               "line": 31
2026-06-22T02:37:07.4093771Z             },
2026-06-22T02:37:07.4093877Z             {
2026-06-22T02:37:07.4094048Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4094154Z               "line": 113
2026-06-22T02:37:07.4094267Z             },
2026-06-22T02:37:07.4094377Z             {
2026-06-22T02:37:07.4094530Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4094649Z               "line": 138
2026-06-22T02:37:07.4094745Z             }
2026-06-22T02:37:07.4094850Z           ]
2026-06-22T02:37:07.4094948Z         },
2026-06-22T02:37:07.4095058Z         "int": {
2026-06-22T02:37:07.4095178Z           "complete": false,
2026-06-22T02:37:07.4095287Z           "evidence": []
2026-06-22T02:37:07.4095396Z         },
2026-06-22T02:37:07.4095507Z         "unit": {
2026-06-22T02:37:07.4095620Z           "complete": true,
2026-06-22T02:37:07.4095731Z           "evidence": [
2026-06-22T02:37:07.4095840Z             {
2026-06-22T02:37:07.4095997Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4099136Z               "line": 261
2026-06-22T02:37:07.4099280Z             },
2026-06-22T02:37:07.4099384Z             {
2026-06-22T02:37:07.4099557Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4099666Z               "line": 276
2026-06-22T02:37:07.4099771Z             },
2026-06-22T02:37:07.4099871Z             {
2026-06-22T02:37:07.4100037Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4100141Z               "line": 293
2026-06-22T02:37:07.4100246Z             },
2026-06-22T02:37:07.4100359Z             {
2026-06-22T02:37:07.4100525Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4100635Z               "line": 310
2026-06-22T02:37:07.4100744Z             },
2026-06-22T02:37:07.4100845Z             {
2026-06-22T02:37:07.4100993Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4101102Z               "line": 327
2026-06-22T02:37:07.4101198Z             },
2026-06-22T02:37:07.4101298Z             {
2026-06-22T02:37:07.4101440Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.4101546Z               "line": 366
2026-06-22T02:37:07.4101646Z             },
2026-06-22T02:37:07.4101751Z             {
2026-06-22T02:37:07.4101922Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4102027Z               "line": 179
2026-06-22T02:37:07.4102124Z             },
2026-06-22T02:37:07.4102228Z             {
2026-06-22T02:37:07.4102395Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4102505Z               "line": 194
2026-06-22T02:37:07.4102608Z             },
2026-06-22T02:37:07.4102712Z             {
2026-06-22T02:37:07.4102879Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4102991Z               "line": 204
2026-06-22T02:37:07.4103245Z             },
2026-06-22T02:37:07.4103349Z             {
2026-06-22T02:37:07.4103521Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4103630Z               "line": 259
2026-06-22T02:37:07.4103731Z             },
2026-06-22T02:37:07.4103826Z             {
2026-06-22T02:37:07.4103997Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4104094Z               "line": 269
2026-06-22T02:37:07.4104193Z             },
2026-06-22T02:37:07.4104293Z             {
2026-06-22T02:37:07.4104460Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.4104656Z               "line": 283
2026-06-22T02:37:07.4104761Z             }
2026-06-22T02:37:07.4104866Z           ]
2026-06-22T02:37:07.4104971Z         }
2026-06-22T02:37:07.4105072Z       }
2026-06-22T02:37:07.4105170Z     },
2026-06-22T02:37:07.4105276Z     {
2026-06-22T02:37:07.4105415Z       "id": "REQ-HAZARD-PARENT-PID-PREFER",
2026-06-22T02:37:07.4105646Z       "title": "Prefer stable parent PID / broker handle over ephemeral PID (2.1)",
2026-06-22T02:37:07.4105757Z       "requiredStages": [],
2026-06-22T02:37:07.4105861Z       "stages": {
2026-06-22T02:37:07.4105966Z         "doc": {
2026-06-22T02:37:07.4106081Z           "complete": false,
2026-06-22T02:37:07.4106200Z           "evidence": []
2026-06-22T02:37:07.4106296Z         },
2026-06-22T02:37:07.4106410Z         "impl": {
2026-06-22T02:37:07.4106529Z           "complete": false,
2026-06-22T02:37:07.4106635Z           "evidence": []
2026-06-22T02:37:07.4106748Z         },
2026-06-22T02:37:07.4106853Z         "int": {
2026-06-22T02:37:07.4106973Z           "complete": false,
2026-06-22T02:37:07.4107096Z           "evidence": []
2026-06-22T02:37:07.4107201Z         },
2026-06-22T02:37:07.4107316Z         "unit": {
2026-06-22T02:37:07.4107425Z           "complete": false,
2026-06-22T02:37:07.4107530Z           "evidence": []
2026-06-22T02:37:07.4107636Z         }
2026-06-22T02:37:07.4107740Z       }
2026-06-22T02:37:07.4107843Z     },
2026-06-22T02:37:07.4107948Z     {
2026-06-22T02:37:07.4108094Z       "id": "REQ-HAZARD-PSYCHE-OUTBOUND-PROXY",
2026-06-22T02:37:07.4109071Z       "title": "Psyche outbound captured + sanitized: the live-Psyche turn driver captures stdout (never Stdio::null), and the daemon strips/re-stamps Psyche-supplied from=/target and constrains routing (reply→__REPLY_TO__ sender, notify→own user/subnet) (7.3)",
2026-06-22T02:37:07.4109196Z       "requiredStages": [
2026-06-22T02:37:07.4109291Z         "impl",
2026-06-22T02:37:07.4109400Z         "unit"
2026-06-22T02:37:07.4109516Z       ],
2026-06-22T02:37:07.4109615Z       "stages": {
2026-06-22T02:37:07.4109724Z         "doc": {
2026-06-22T02:37:07.4109831Z           "complete": false,
2026-06-22T02:37:07.4109949Z           "evidence": []
2026-06-22T02:37:07.4110053Z         },
2026-06-22T02:37:07.4110160Z         "impl": {
2026-06-22T02:37:07.4110273Z           "complete": true,
2026-06-22T02:37:07.4110378Z           "evidence": [
2026-06-22T02:37:07.4110484Z             {
2026-06-22T02:37:07.4110639Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4110749Z               "line": 26
2026-06-22T02:37:07.4110849Z             },
2026-06-22T02:37:07.4110956Z             {
2026-06-22T02:37:07.4111105Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4111215Z               "line": 95
2026-06-22T02:37:07.4111318Z             },
2026-06-22T02:37:07.4111420Z             {
2026-06-22T02:37:07.4111572Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4111686Z               "line": 166
2026-06-22T02:37:07.4111787Z             },
2026-06-22T02:37:07.4111887Z             {
2026-06-22T02:37:07.4112039Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:37:07.4112144Z               "line": 19
2026-06-22T02:37:07.4112244Z             },
2026-06-22T02:37:07.4112349Z             {
2026-06-22T02:37:07.4112497Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:37:07.4112717Z               "line": 50
2026-06-22T02:37:07.4112825Z             },
2026-06-22T02:37:07.4112930Z             {
2026-06-22T02:37:07.4113070Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:37:07.4113164Z               "line": 18
2026-06-22T02:37:07.4113272Z             },
2026-06-22T02:37:07.4113373Z             {
2026-06-22T02:37:07.4113499Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:37:07.4113608Z               "line": 71
2026-06-22T02:37:07.4113715Z             },
2026-06-22T02:37:07.4113824Z             {
2026-06-22T02:37:07.4113957Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.4114162Z               "line": 87
2026-06-22T02:37:07.4114272Z             }
2026-06-22T02:37:07.4114377Z           ]
2026-06-22T02:37:07.4114481Z         },
2026-06-22T02:37:07.4114587Z         "int": {
2026-06-22T02:37:07.4114701Z           "complete": false,
2026-06-22T02:37:07.4114810Z           "evidence": []
2026-06-22T02:37:07.4114921Z         },
2026-06-22T02:37:07.4115021Z         "unit": {
2026-06-22T02:37:07.4115134Z           "complete": true,
2026-06-22T02:37:07.4115236Z           "evidence": [
2026-06-22T02:37:07.4115340Z             {
2026-06-22T02:37:07.4115493Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4115604Z               "line": 289
2026-06-22T02:37:07.4115711Z             },
2026-06-22T02:37:07.4115817Z             {
2026-06-22T02:37:07.4115956Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4116054Z               "line": 314
2026-06-22T02:37:07.4116153Z             },
2026-06-22T02:37:07.4116269Z             {
2026-06-22T02:37:07.4116411Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4116522Z               "line": 350
2026-06-22T02:37:07.4116631Z             },
2026-06-22T02:37:07.4116731Z             {
2026-06-22T02:37:07.4116875Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4116985Z               "line": 418
2026-06-22T02:37:07.4117093Z             },
2026-06-22T02:37:07.4117195Z             {
2026-06-22T02:37:07.4117346Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4117451Z               "line": 429
2026-06-22T02:37:07.4117557Z             },
2026-06-22T02:37:07.4117661Z             {
2026-06-22T02:37:07.4117795Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4117900Z               "line": 460
2026-06-22T02:37:07.4118004Z             },
2026-06-22T02:37:07.4118115Z             {
2026-06-22T02:37:07.4118261Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.4118375Z               "line": 471
2026-06-22T02:37:07.4118480Z             },
2026-06-22T02:37:07.4118569Z             {
2026-06-22T02:37:07.4118706Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:37:07.4118812Z               "line": 77
2026-06-22T02:37:07.4118921Z             },
2026-06-22T02:37:07.4119117Z             {
2026-06-22T02:37:07.4119255Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:37:07.4119354Z               "line": 97
2026-06-22T02:37:07.4119461Z             },
2026-06-22T02:37:07.4119565Z             {
2026-06-22T02:37:07.4119708Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:37:07.4119818Z               "line": 112
2026-06-22T02:37:07.4119923Z             },
2026-06-22T02:37:07.4120028Z             {
2026-06-22T02:37:07.4120166Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:37:07.4120276Z               "line": 123
2026-06-22T02:37:07.4120377Z             },
2026-06-22T02:37:07.4120485Z             {
2026-06-22T02:37:07.4120633Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:37:07.4120739Z               "line": 130
2026-06-22T02:37:07.4120833Z             },
2026-06-22T02:37:07.4120933Z             {
2026-06-22T02:37:07.4121073Z               "path": "crates/spt-live/src/outbound.rs",
2026-06-22T02:37:07.4121271Z               "line": 145
2026-06-22T02:37:07.4121376Z             },
2026-06-22T02:37:07.4121465Z             {
2026-06-22T02:37:07.4121602Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:37:07.4121708Z               "line": 115
2026-06-22T02:37:07.4121812Z             },
2026-06-22T02:37:07.4121912Z             {
2026-06-22T02:37:07.4122052Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:37:07.4122160Z               "line": 130
2026-06-22T02:37:07.4122265Z             },
2026-06-22T02:37:07.4122375Z             {
2026-06-22T02:37:07.4122513Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.4122714Z               "line": 428
2026-06-22T02:37:07.4122809Z             }
2026-06-22T02:37:07.4122914Z           ]
2026-06-22T02:37:07.4123019Z         }
2026-06-22T02:37:07.4123119Z       }
2026-06-22T02:37:07.4123224Z     },
2026-06-22T02:37:07.4123315Z     {
2026-06-22T02:37:07.4123472Z       "id": "REQ-HAZARD-PTY-INPUT-WRITER-WEDGE",
2026-06-22T02:37:07.4129553Z       "title": "Pasting into an `spt rc` session WEDGES the broker — after a paste the operator can no longer type AND can no longer attach to NEW or EXISTING sessions (`brain IPC read deadline`). ROOT (doyle /diagnose, code-grounded): the operator-keystroke path rc -> net-stream Input -> serve_attach (attach.rs:197 brain.send_effect) -> KIND_INPUT -> broker dispatch loop (broker.rs:1091) -> dispatch_input (broker.rs:1459) -> session.write_input(&bytes) runs SYNCHRONOUSLY on the broker request-handling thread. W1b (REQ-HAZARD-EFFECT-JOURNAL-PTY-WEDGE) released the journal lock across the effect (fix 1) + made PtyWrite ephemeral/no-fsync (fix 3) but EXPLICITLY DEFERRED fix (2) — bound/fail-fast the PtyWrite itself. A single keystroke never fills the ConPTY input buffer; a PASTE BURST does -> write_input blocks -> the dispatch thread cannot service the next frame (a re-attach subscribe, a become_controller restore-write, an inject-floor flush) -> wedge. Not a bug-2 regression (the byte path funnels to the same write_input; paste just reliably fills the buffer). FIX (doyle design, V0.13.0-P0-PTY-INPUT-WRITER-DESIGN.md, CONTEXT L33 broker-owns-PTY/minimal + L435 SessionSurface + single-writer pattern): one dedicated per-session INPUT-WRITER THREAD = the SOLE caller of the blocking write_input, fed by a BOUNDED FIFO channel; every caller (dispatch_input, serve_attach->send_effect, inject-floor flush) ENQUEUES + returns immediately, never blocks. A blocked/slow harness blocks ONLY its own writer thread, never the broker dispatch. Backpressure (operator ruling): queue full => DROP excess input + stamp the session INPUT_BACKPRESSURE (visible health signal); the daemon NEVER wedges; a merely-slow harness self-heals as the writer drains. Exactly-once preserved (PtyWrite ephemeral: apply_once effect = the non-blocking enqueue => Applied; ack now means accepted+ordered, benign — rc does not gate on landing); order preserved (single FIFO + single writer); inject-floor (W2 Layer C) choreography moves to the lone writer. Completes the W1b-deferred fix (2), cross-platform (cfg(unix) forkpty park folds in). (v0.13.0)",
2026-06-22T02:37:07.4129754Z       "requiredStages": [
2026-06-22T02:37:07.4129858Z         "impl",
2026-06-22T02:37:07.4129963Z         "unit",
2026-06-22T02:37:07.4130073Z         "int"
2026-06-22T02:37:07.4130177Z       ],
2026-06-22T02:37:07.4130293Z       "stages": {
2026-06-22T02:37:07.4130392Z         "doc": {
2026-06-22T02:37:07.4130511Z           "complete": false,
2026-06-22T02:37:07.4130627Z           "evidence": []
2026-06-22T02:37:07.4130721Z         },
2026-06-22T02:37:07.4130816Z         "impl": {
2026-06-22T02:37:07.4130932Z           "complete": true,
2026-06-22T02:37:07.4131045Z           "evidence": [
2026-06-22T02:37:07.4131141Z             {
2026-06-22T02:37:07.4131285Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4131398Z               "line": 944
2026-06-22T02:37:07.4131498Z             },
2026-06-22T02:37:07.4131698Z             {
2026-06-22T02:37:07.4131840Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.4131950Z               "line": 322
2026-06-22T02:37:07.4132053Z             }
2026-06-22T02:37:07.4132148Z           ]
2026-06-22T02:37:07.4132249Z         },
2026-06-22T02:37:07.4132354Z         "int": {
2026-06-22T02:37:07.4132472Z           "complete": true,
2026-06-22T02:37:07.4132573Z           "evidence": [
2026-06-22T02:37:07.4132673Z             {
2026-06-22T02:37:07.4132855Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.4132964Z               "line": 2035
2026-06-22T02:37:07.4133073Z             }
2026-06-22T02:37:07.4133298Z           ]
2026-06-22T02:37:07.4133402Z         },
2026-06-22T02:37:07.4133504Z         "unit": {
2026-06-22T02:37:07.4133622Z           "complete": true,
2026-06-22T02:37:07.4133726Z           "evidence": [
2026-06-22T02:37:07.4133837Z             {
2026-06-22T02:37:07.4133988Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4134104Z               "line": 2625
2026-06-22T02:37:07.4134214Z             },
2026-06-22T02:37:07.4134317Z             {
2026-06-22T02:37:07.4134460Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4134568Z               "line": 2689
2026-06-22T02:37:07.4134676Z             },
2026-06-22T02:37:07.4134782Z             {
2026-06-22T02:37:07.4134916Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4135024Z               "line": 2744
2026-06-22T02:37:07.4135121Z             }
2026-06-22T02:37:07.4135231Z           ]
2026-06-22T02:37:07.4135334Z         }
2026-06-22T02:37:07.4135440Z       }
2026-06-22T02:37:07.4135545Z     },
2026-06-22T02:37:07.4135649Z     {
2026-06-22T02:37:07.4135789Z       "id": "REQ-HAZARD-PUMP-IPC-DEADLINE",
2026-06-22T02:37:07.4136637Z       "title": "The single-threaded peer pump's brain-IPC reads are deadline-bounded (PUMP_PEER_IO_TIMEOUT, total-wait per call); a TimedOut read POISONS the client and escalates to a SUPERVISED RESTART, never a per-peer retry — a black-holed peer must never wedge the whole pump",
2026-06-22T02:37:07.4136766Z       "requiredStages": [
2026-06-22T02:37:07.4136875Z         "doc",
2026-06-22T02:37:07.4136981Z         "impl",
2026-06-22T02:37:07.4137081Z         "unit"
2026-06-22T02:37:07.4137175Z       ],
2026-06-22T02:37:07.4137284Z       "stages": {
2026-06-22T02:37:07.4137385Z         "doc": {
2026-06-22T02:37:07.4137499Z           "complete": true,
2026-06-22T02:37:07.4137612Z           "evidence": [
2026-06-22T02:37:07.4137714Z             {
2026-06-22T02:37:07.4137842Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4137962Z               "line": 374
2026-06-22T02:37:07.4138066Z             }
2026-06-22T02:37:07.4138166Z           ]
2026-06-22T02:37:07.4138271Z         },
2026-06-22T02:37:07.4138372Z         "impl": {
2026-06-22T02:37:07.4138485Z           "complete": true,
2026-06-22T02:37:07.4138586Z           "evidence": [
2026-06-22T02:37:07.4138696Z             {
2026-06-22T02:37:07.4138843Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4139030Z               "line": 206
2026-06-22T02:37:07.4139125Z             },
2026-06-22T02:37:07.4139230Z             {
2026-06-22T02:37:07.4139363Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4139467Z               "line": 310
2026-06-22T02:37:07.4139567Z             },
2026-06-22T02:37:07.4139671Z             {
2026-06-22T02:37:07.4139808Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4139913Z               "line": 568
2026-06-22T02:37:07.4140019Z             },
2026-06-22T02:37:07.4140118Z             {
2026-06-22T02:37:07.4140262Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4140371Z               "line": 583
2026-06-22T02:37:07.4140475Z             },
2026-06-22T02:37:07.4140577Z             {
2026-06-22T02:37:07.4140709Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4140933Z               "line": 1318
2026-06-22T02:37:07.4141038Z             },
2026-06-22T02:37:07.4141148Z             {
2026-06-22T02:37:07.4141295Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4141405Z               "line": 443
2026-06-22T02:37:07.4141502Z             },
2026-06-22T02:37:07.4141610Z             {
2026-06-22T02:37:07.4141763Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4141864Z               "line": 590
2026-06-22T02:37:07.4141972Z             },
2026-06-22T02:37:07.4142073Z             {
2026-06-22T02:37:07.4142216Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4142429Z               "line": 731
2026-06-22T02:37:07.4142524Z             }
2026-06-22T02:37:07.4142632Z           ]
2026-06-22T02:37:07.4142732Z         },
2026-06-22T02:37:07.4142843Z         "int": {
2026-06-22T02:37:07.4142956Z           "complete": false,
2026-06-22T02:37:07.4143066Z           "evidence": []
2026-06-22T02:37:07.4143181Z         },
2026-06-22T02:37:07.4143290Z         "unit": {
2026-06-22T02:37:07.4143395Z           "complete": true,
2026-06-22T02:37:07.4143500Z           "evidence": [
2026-06-22T02:37:07.4143609Z             {
2026-06-22T02:37:07.4143749Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4143853Z               "line": 1155
2026-06-22T02:37:07.4143958Z             },
2026-06-22T02:37:07.4144064Z             {
2026-06-22T02:37:07.4144224Z               "path": "crates/spt-daemon/tests/pumpdeadline.rs",
2026-06-22T02:37:07.4144330Z               "line": 30
2026-06-22T02:37:07.4144435Z             }
2026-06-22T02:37:07.4144539Z           ]
2026-06-22T02:37:07.4144640Z         }
2026-06-22T02:37:07.4144745Z       }
2026-06-22T02:37:07.4144854Z     },
2026-06-22T02:37:07.4144962Z     {
2026-06-22T02:37:07.4145096Z       "id": "REQ-HAZARD-RC-ATTACH-FAILFAST",
2026-06-22T02:37:07.4148369Z       "title": "B1: `spt rc <id>` to a DEAD or non-streaming session fails fast with a clear message, never an INFINITE blank screen. Today rc.rs run_attach (209-231) + pump spawns PUMP_IPC_READER and blocks: the poll times out each slice but the stream never produces output, so the operator sees a permanent blank (operator: fresh wall-f attached, closed tab, then `spt rc wall-f` HUNG — the broker still resolved a session for it). FIX: (a) once B2 lands, gate attach on is_online/status — an offline endpoint yields a clean 'endpoint offline, start it' not an attach; (b) fail-fast — if the attach-open ack / first output does not arrive within a bound, surface a clear message, never an infinite blank; (c) the broker EOFs the attach stream when the session's child is dead, so rc's existing PumpEnd::BrokerGone graceful path (REQ-HAZARD-RC-EOF) catches it. PIN the exact sub-mechanism with a repro test FIRST (dead-session-lingers-in-broker vs reaped-but-rc-waits vs alive-resting-no-wake — the wall-f Windows tab-close: child alive-silent vs dead-not-reaped). (v0.12.0)",
2026-06-22T02:37:07.4148512Z       "requiredStages": [
2026-06-22T02:37:07.4148627Z         "impl",
2026-06-22T02:37:07.4148726Z         "unit",
2026-06-22T02:37:07.4148836Z         "int"
2026-06-22T02:37:07.4148937Z       ],
2026-06-22T02:37:07.4149127Z       "stages": {
2026-06-22T02:37:07.4149237Z         "doc": {
2026-06-22T02:37:07.4149347Z           "complete": false,
2026-06-22T02:37:07.4149461Z           "evidence": []
2026-06-22T02:37:07.4149581Z         },
2026-06-22T02:37:07.4149694Z         "impl": {
2026-06-22T02:37:07.4149810Z           "complete": true,
2026-06-22T02:37:07.4149919Z           "evidence": [
2026-06-22T02:37:07.4150027Z             {
2026-06-22T02:37:07.4150175Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4150283Z               "line": 718
2026-06-22T02:37:07.4150387Z             },
2026-06-22T02:37:07.4150492Z             {
2026-06-22T02:37:07.4150616Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4150725Z               "line": 887
2026-06-22T02:37:07.4150945Z             }
2026-06-22T02:37:07.4151040Z           ]
2026-06-22T02:37:07.4151137Z         },
2026-06-22T02:37:07.4151241Z         "int": {
2026-06-22T02:37:07.4151350Z           "complete": true,
2026-06-22T02:37:07.4151456Z           "evidence": [
2026-06-22T02:37:07.4151561Z             {
2026-06-22T02:37:07.4151713Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.4151823Z               "line": 420
2026-06-22T02:37:07.4151932Z             }
2026-06-22T02:37:07.4152033Z           ]
2026-06-22T02:37:07.4152142Z         },
2026-06-22T02:37:07.4152247Z         "unit": {
2026-06-22T02:37:07.4152367Z           "complete": true,
2026-06-22T02:37:07.4152580Z           "evidence": [
2026-06-22T02:37:07.4152682Z             {
2026-06-22T02:37:07.4152819Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4152932Z               "line": 1072
2026-06-22T02:37:07.4153037Z             },
2026-06-22T02:37:07.4153136Z             {
2026-06-22T02:37:07.4153268Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4153379Z               "line": 1096
2026-06-22T02:37:07.4153479Z             }
2026-06-22T02:37:07.4153587Z           ]
2026-06-22T02:37:07.4153694Z         }
2026-06-22T02:37:07.4153798Z       }
2026-06-22T02:37:07.4153898Z     },
2026-06-22T02:37:07.4154004Z     {
2026-06-22T02:37:07.4154155Z       "id": "REQ-HAZARD-RC-ATTACH-ONLINE-RACE",
2026-06-22T02:37:07.4157886Z       "title": "`spt endpoint run` in an ATTACH/VIEW terminal action attaches BEFORE the freshly-spawned endpoint is online, so the attach races (or outright loses to) the harness bind. ROOT (doyle /diagnose, code-grounded): cmd_endpoint_run (cli.rs) does launch_harness_brokered_in -> (if start: return) -> run_attach with NO await-online between them. launch_harness_brokered_in returns once the harness PROCESS is spawned, but the broker-PTY bind (info status -> STATUS_ONLINE + the live session) lands ASYNC. Both picker attach paths route here with start=false (RunMode::Attach -> cmd_endpoint_run start=false,view=false): Start-now catches the endpoint mid-bringup -> run_attach attempts + loses the handshake race; Resume-from-history catches it still fully OFFLINE -> run_attach's status-gate (REQ-HAZARD-RC-ATTACH-FAILFAST) short-circuits 'offline - nothing to attach' and NEVER attempts. SAME root, two faces (the W4 attach-by-default surfaced both; an online endpoint is unaffected - the picker returns Outcome::Attach, not Run). FIX: in cmd_endpoint_run, when the terminal action is attach/view (NOT start), AWAIT the endpoint online between launch_harness_brokered_in success and run_attach - poll spt_store::info read_info().status to STATUS_ONLINE with a bounded harness-boot deadline (~25s) at a tight interval; on online -> run_attach; on timeout -> ENDPOINT_RUN_ONLINE_TIMEOUT err (do NOT attach a dead bringup). (v0.13.0)",
2026-06-22T02:37:07.4158024Z       "requiredStages": [
2026-06-22T02:37:07.4158130Z         "impl",
2026-06-22T02:37:07.4158239Z         "unit",
2026-06-22T02:37:07.4158347Z         "int"
2026-06-22T02:37:07.4158447Z       ],
2026-06-22T02:37:07.4158553Z       "stages": {
2026-06-22T02:37:07.4158662Z         "doc": {
2026-06-22T02:37:07.4158782Z           "complete": false,
2026-06-22T02:37:07.4158891Z           "evidence": []
2026-06-22T02:37:07.4159062Z         },
2026-06-22T02:37:07.4159163Z         "impl": {
2026-06-22T02:37:07.4159272Z           "complete": true,
2026-06-22T02:37:07.4159382Z           "evidence": [
2026-06-22T02:37:07.4159482Z             {
2026-06-22T02:37:07.4159611Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4159716Z               "line": 1417
2026-06-22T02:37:07.4159821Z             },
2026-06-22T02:37:07.4159921Z             {
2026-06-22T02:37:07.4160051Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4160169Z               "line": 1441
2026-06-22T02:37:07.4160273Z             }
2026-06-22T02:37:07.4160365Z           ]
2026-06-22T02:37:07.4160470Z         },
2026-06-22T02:37:07.4160573Z         "int": {
2026-06-22T02:37:07.4160787Z           "complete": true,
2026-06-22T02:37:07.4160904Z           "evidence": [
2026-06-22T02:37:07.4161000Z             {
2026-06-22T02:37:07.4161149Z               "path": "crates/spt/tests/dummy_harness_e2e.rs",
2026-06-22T02:37:07.4161252Z               "line": 329
2026-06-22T02:37:07.4161357Z             }
2026-06-22T02:37:07.4161463Z           ]
2026-06-22T02:37:07.4161567Z         },
2026-06-22T02:37:07.4161668Z         "unit": {
2026-06-22T02:37:07.4161787Z           "complete": true,
2026-06-22T02:37:07.4161900Z           "evidence": [
2026-06-22T02:37:07.4161997Z             {
2026-06-22T02:37:07.4162126Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4162331Z               "line": 8169
2026-06-22T02:37:07.4162435Z             }
2026-06-22T02:37:07.4162540Z           ]
2026-06-22T02:37:07.4162646Z         }
2026-06-22T02:37:07.4162754Z       }
2026-06-22T02:37:07.4162864Z     },
2026-06-22T02:37:07.4162961Z     {
2026-06-22T02:37:07.4163087Z       "id": "REQ-HAZARD-RC-EOF",
2026-06-22T02:37:07.4166892Z       "title": "A severed broker stream during a live rc session surfaces GRACEFULLY, never as a raw io error that crashes the PTY. The rc read-loop (rc.rs:352-362) continues only on WouldBlock/TimedOut; ANY other read_event_until error — including UnexpectedEof 'failed to fill whole buffer' — returns Err → RC_FAIL → the PTY 'crashes' from the user's view. Confirmed trigger: a deliberate `spt daemon stop` (broker bounce) severs an active rc (perri stopped the daemon to release owlery watch handles). Same severed-broker-stream EOF class as the v0.9.1 seed fix (seed_fail_message) and the listener-death case — spt-core must classify a broker-gone EOF and (a) surface a CLEAR actionable message ('daemon stopped/restarted — re-run / reconnect'), never the raw buffer error, and ideally (b) AUTO-REATTACH to the same session on the fresh broker (the broker is the daemon-lifetime anchor; it returns on the next `spt api` call). FOLD two side-observations: (1) `spt daemon stop` SILENTLY drops active rc/live sessions — warn ('N active session(s) will drop') or graceful-detach on stop; (2) the daemon holds owlery WATCH HANDLES on perch dirs so a torn-down perch dir stays 'Device busy' until a full daemon stop releases them (perri's rt-* cleanup) — a torn-down perch's handle should release without a daemon stop. doyle Finding C, root-caused. (post-v0.10.0)",
2026-06-22T02:37:07.4167063Z       "requiredStages": [
2026-06-22T02:37:07.4167168Z         "impl",
2026-06-22T02:37:07.4167277Z         "unit"
2026-06-22T02:37:07.4167378Z       ],
2026-06-22T02:37:07.4167483Z       "stages": {
2026-06-22T02:37:07.4167588Z         "doc": {
2026-06-22T02:37:07.4167717Z           "complete": false,
2026-06-22T02:37:07.4167826Z           "evidence": []
2026-06-22T02:37:07.4167926Z         },
2026-06-22T02:37:07.4168032Z         "impl": {
2026-06-22T02:37:07.4168155Z           "complete": true,
2026-06-22T02:37:07.4168264Z           "evidence": [
2026-06-22T02:37:07.4168366Z             {
2026-06-22T02:37:07.4168507Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4168618Z               "line": 910
2026-06-22T02:37:07.4168724Z             }
2026-06-22T02:37:07.4168822Z           ]
2026-06-22T02:37:07.4168921Z         },
2026-06-22T02:37:07.4169123Z         "int": {
2026-06-22T02:37:07.4169231Z           "complete": false,
2026-06-22T02:37:07.4169337Z           "evidence": []
2026-06-22T02:37:07.4169437Z         },
2026-06-22T02:37:07.4169541Z         "unit": {
2026-06-22T02:37:07.4169652Z           "complete": true,
2026-06-22T02:37:07.4169747Z           "evidence": [
2026-06-22T02:37:07.4169856Z             {
2026-06-22T02:37:07.4169986Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4170100Z               "line": 1112
2026-06-22T02:37:07.4170209Z             }
2026-06-22T02:37:07.4170310Z           ]
2026-06-22T02:37:07.4170419Z         }
2026-06-22T02:37:07.4170523Z       }
2026-06-22T02:37:07.4170630Z     },
2026-06-22T02:37:07.4170734Z     {
2026-06-22T02:37:07.4170973Z       "id": "REQ-HAZARD-RC-INPUT-KEY-ENCODING",
2026-06-22T02:37:07.4175390Z       "title": "An `spt rc` session forwards the Backspace key as the VT DEL byte (0x7f), so the hosted TUI (Claude Code) deletes ONE character — never a whole word. SYMPTOM (operator dogfooding): Backspace in an rc session always behaves like ctrl+Backspace — deletes the entire last word. ROOT (doyle /diagnose, code-grounded, byte PENDING HITL confirm): rc is a RAW VERBATIM byte pump — spawn_stdin_reader (rc.rs:152) reads std::io::stdin() bytes under crossterm raw mode and forwards them unchanged (parse_stdin_chunk only intercepts the ctrl-b detach prefix); there is NO key-event encoding and NO 0x08↔0x7f normalization ANYWHERE in the tree (grep: zero SetConsoleMode / ENABLE_VIRTUAL_TERMINAL_INPUT). On Windows, crossterm enable_raw_mode does NOT set ENABLE_VIRTUAL_TERMINAL_INPUT, so the LEGACY console delivers ^H (0x08, ctrl+h) for Backspace instead of VT DEL (0x7f); Claude Code maps ^H → backward-kill-word → the observed whole-word delete. CONFIRM-FIRST (build the loop): an env-gated hexdump in spawn_stdin_reader (SPT_RC_DEBUG_KEYS) prints the forwarded byte; operator presses Backspace + ctrl+Backspace in a real rc session. FIX CANDIDATES: (a) enable ENABLE_VIRTUAL_TERMINAL_INPUT on the rc stdin console on Windows so the console emits proper VT (Backspace→0x7f, arrows/Home/End as CSI) — cleanest, fixes the whole key map not just Backspace; (b) narrow normalize bare 0x08→0x7f in the rc input path (riskier — a real ctrl+h is also 0x08). Prefer (a) unless it regresses other keys. Add a KNOWN-HAZARDS.md entry on landing. (v0.13.0)",
2026-06-22T02:37:07.4175672Z       "requiredStages": [
2026-06-22T02:37:07.4175792Z         "impl",
2026-06-22T02:37:07.4175890Z         "unit"
2026-06-22T02:37:07.4175991Z       ],
2026-06-22T02:37:07.4176107Z       "stages": {
2026-06-22T02:37:07.4176205Z         "doc": {
2026-06-22T02:37:07.4176330Z           "complete": false,
2026-06-22T02:37:07.4176436Z           "evidence": []
2026-06-22T02:37:07.4176548Z         },
2026-06-22T02:37:07.4176657Z         "impl": {
2026-06-22T02:37:07.4176767Z           "complete": true,
2026-06-22T02:37:07.4176879Z           "evidence": [
2026-06-22T02:37:07.4176984Z             {
2026-06-22T02:37:07.4177124Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4177241Z               "line": 264
2026-06-22T02:37:07.4177347Z             }
2026-06-22T02:37:07.4177447Z           ]
2026-06-22T02:37:07.4177556Z         },
2026-06-22T02:37:07.4177667Z         "int": {
2026-06-22T02:37:07.4177781Z           "complete": false,
2026-06-22T02:37:07.4177899Z           "evidence": []
2026-06-22T02:37:07.4178006Z         },
2026-06-22T02:37:07.4178119Z         "unit": {
2026-06-22T02:37:07.4178224Z           "complete": true,
2026-06-22T02:37:07.4178330Z           "evidence": [
2026-06-22T02:37:07.4178444Z             {
2026-06-22T02:37:07.4178572Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4178682Z               "line": 1094
2026-06-22T02:37:07.4178791Z             },
2026-06-22T02:37:07.4178897Z             {
2026-06-22T02:37:07.4179096Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4179217Z               "line": 1225
2026-06-22T02:37:07.4179326Z             },
2026-06-22T02:37:07.4179425Z             {
2026-06-22T02:37:07.4179558Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4179669Z               "line": 1227
2026-06-22T02:37:07.4179782Z             }
2026-06-22T02:37:07.4179887Z           ]
2026-06-22T02:37:07.4179992Z         }
2026-06-22T02:37:07.4180101Z       }
2026-06-22T02:37:07.4180202Z     },
2026-06-22T02:37:07.4180312Z     {
2026-06-22T02:37:07.4180459Z       "id": "REQ-HAZARD-REGISTRY-CONCURRENT",
2026-06-22T02:37:07.4180735Z       "title": "Concurrent SQLite openers (registry/spool) must not fail with 'database is locked' (4.7)",
2026-06-22T02:37:07.4180856Z       "requiredStages": [
2026-06-22T02:37:07.4180965Z         "impl",
2026-06-22T02:37:07.4181070Z         "unit"
2026-06-22T02:37:07.4181270Z       ],
2026-06-22T02:37:07.4181379Z       "stages": {
2026-06-22T02:37:07.4181480Z         "doc": {
2026-06-22T02:37:07.4181603Z           "complete": true,
2026-06-22T02:37:07.4181717Z           "evidence": [
2026-06-22T02:37:07.4181822Z             {
2026-06-22T02:37:07.4181958Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4182067Z               "line": 139
2026-06-22T02:37:07.4182172Z             }
2026-06-22T02:37:07.4182273Z           ]
2026-06-22T02:37:07.4182377Z         },
2026-06-22T02:37:07.4182483Z         "impl": {
2026-06-22T02:37:07.4182602Z           "complete": true,
2026-06-22T02:37:07.4182711Z           "evidence": [
2026-06-22T02:37:07.4182917Z             {
2026-06-22T02:37:07.4183064Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T02:37:07.4183169Z               "line": 29
2026-06-22T02:37:07.4183284Z             },
2026-06-22T02:37:07.4183379Z             {
2026-06-22T02:37:07.4183508Z               "path": "crates/spt-store/src/db.rs",
2026-06-22T02:37:07.4183622Z               "line": 67
2026-06-22T02:37:07.4183728Z             },
2026-06-22T02:37:07.4183837Z             {
2026-06-22T02:37:07.4183970Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.4184090Z               "line": 101
2026-06-22T02:37:07.4184194Z             },
2026-06-22T02:37:07.4184304Z             {
2026-06-22T02:37:07.4184457Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4184560Z               "line": 30
2026-06-22T02:37:07.4184670Z             },
2026-06-22T02:37:07.4184765Z             {
2026-06-22T02:37:07.4184896Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.4185016Z               "line": 48
2026-06-22T02:37:07.4185121Z             }
2026-06-22T02:37:07.4185230Z           ]
2026-06-22T02:37:07.4185331Z         },
2026-06-22T02:37:07.4185440Z         "int": {
2026-06-22T02:37:07.4185559Z           "complete": false,
2026-06-22T02:37:07.4185670Z           "evidence": []
2026-06-22T02:37:07.4185769Z         },
2026-06-22T02:37:07.4185883Z         "unit": {
2026-06-22T02:37:07.4186003Z           "complete": true,
2026-06-22T02:37:07.4186107Z           "evidence": [
2026-06-22T02:37:07.4186217Z             {
2026-06-22T02:37:07.4186366Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4186480Z               "line": 162
2026-06-22T02:37:07.4186585Z             }
2026-06-22T02:37:07.4186695Z           ]
2026-06-22T02:37:07.4186809Z         }
2026-06-22T02:37:07.4186910Z       }
2026-06-22T02:37:07.4187020Z     },
2026-06-22T02:37:07.4187122Z     {
2026-06-22T02:37:07.4187265Z       "id": "REQ-HAZARD-REGISTRY-DIR-CREATE",
2026-06-22T02:37:07.4187679Z       "title": "SQLite store opens create their parent dir themselves — a fresh-home registry op must not SQLITE_CANTOPEN (4.9)",
2026-06-22T02:37:07.4187797Z       "requiredStages": [
2026-06-22T02:37:07.4187907Z         "doc",
2026-06-22T02:37:07.4188017Z         "impl",
2026-06-22T02:37:07.4188121Z         "unit"
2026-06-22T02:37:07.4188227Z       ],
2026-06-22T02:37:07.4188336Z       "stages": {
2026-06-22T02:37:07.4188440Z         "doc": {
2026-06-22T02:37:07.4188561Z           "complete": true,
2026-06-22T02:37:07.4188674Z           "evidence": [
2026-06-22T02:37:07.4188784Z             {
2026-06-22T02:37:07.4188928Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4189118Z               "line": 151
2026-06-22T02:37:07.4189219Z             }
2026-06-22T02:37:07.4189322Z           ]
2026-06-22T02:37:07.4189437Z         },
2026-06-22T02:37:07.4189549Z         "impl": {
2026-06-22T02:37:07.4189661Z           "complete": true,
2026-06-22T02:37:07.4189782Z           "evidence": [
2026-06-22T02:37:07.4189887Z             {
2026-06-22T02:37:07.4190037Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4190142Z               "line": 22
2026-06-22T02:37:07.4190248Z             }
2026-06-22T02:37:07.4190356Z           ]
2026-06-22T02:37:07.4190457Z         },
2026-06-22T02:37:07.4190671Z         "int": {
2026-06-22T02:37:07.4190777Z           "complete": false,
2026-06-22T02:37:07.4190891Z           "evidence": []
2026-06-22T02:37:07.4190986Z         },
2026-06-22T02:37:07.4191091Z         "unit": {
2026-06-22T02:37:07.4191210Z           "complete": true,
2026-06-22T02:37:07.4191315Z           "evidence": [
2026-06-22T02:37:07.4191421Z             {
2026-06-22T02:37:07.4191573Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4191687Z               "line": 298
2026-06-22T02:37:07.4191788Z             }
2026-06-22T02:37:07.4191892Z           ]
2026-06-22T02:37:07.4191997Z         }
2026-06-22T02:37:07.4192201Z       }
2026-06-22T02:37:07.4192310Z     },
2026-06-22T02:37:07.4192406Z     {
2026-06-22T02:37:07.4192556Z       "id": "REQ-HAZARD-REGISTRY-EPOCH-LEASE",
2026-06-22T02:37:07.4193029Z       "title": "Registry merge ordered by per-node monotonic epoch, never wall-clock — a stale Active can't clobber a newer Offline (4.8, red-team #8)",
2026-06-22T02:37:07.4193162Z       "requiredStages": [
2026-06-22T02:37:07.4193266Z         "impl",
2026-06-22T02:37:07.4193372Z         "unit"
2026-06-22T02:37:07.4193481Z       ],
2026-06-22T02:37:07.4193590Z       "stages": {
2026-06-22T02:37:07.4193696Z         "doc": {
2026-06-22T02:37:07.4193801Z           "complete": true,
2026-06-22T02:37:07.4193900Z           "evidence": [
2026-06-22T02:37:07.4194011Z             {
2026-06-22T02:37:07.4194144Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4194254Z               "line": 145
2026-06-22T02:37:07.4194355Z             }
2026-06-22T02:37:07.4194463Z           ]
2026-06-22T02:37:07.4194559Z         },
2026-06-22T02:37:07.4194674Z         "impl": {
2026-06-22T02:37:07.4194792Z           "complete": true,
2026-06-22T02:37:07.4194898Z           "evidence": [
2026-06-22T02:37:07.4195008Z             {
2026-06-22T02:37:07.4195158Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:37:07.4195264Z               "line": 160
2026-06-22T02:37:07.4195367Z             },
2026-06-22T02:37:07.4195470Z             {
2026-06-22T02:37:07.4195624Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4195733Z               "line": 200
2026-06-22T02:37:07.4195843Z             },
2026-06-22T02:37:07.4195939Z             {
2026-06-22T02:37:07.4196096Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4196206Z               "line": 298
2026-06-22T02:37:07.4196311Z             },
2026-06-22T02:37:07.4196420Z             {
2026-06-22T02:37:07.4196563Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:37:07.4196677Z               "line": 20
2026-06-22T02:37:07.4196787Z             }
2026-06-22T02:37:07.4196898Z           ]
2026-06-22T02:37:07.4197001Z         },
2026-06-22T02:37:07.4197097Z         "int": {
2026-06-22T02:37:07.4197207Z           "complete": false,
2026-06-22T02:37:07.4197311Z           "evidence": []
2026-06-22T02:37:07.4197416Z         },
2026-06-22T02:37:07.4197527Z         "unit": {
2026-06-22T02:37:07.4197650Z           "complete": true,
2026-06-22T02:37:07.4197768Z           "evidence": [
2026-06-22T02:37:07.4197873Z             {
2026-06-22T02:37:07.4200993Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4201132Z               "line": 937
2026-06-22T02:37:07.4201241Z             },
2026-06-22T02:37:07.4201342Z             {
2026-06-22T02:37:07.4201517Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T02:37:07.4201637Z               "line": 88
2026-06-22T02:37:07.4201737Z             },
2026-06-22T02:37:07.4201841Z             {
2026-06-22T02:37:07.4202015Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4202133Z               "line": 851
2026-06-22T02:37:07.4202237Z             },
2026-06-22T02:37:07.4202344Z             {
2026-06-22T02:37:07.4202495Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4202601Z               "line": 870
2026-06-22T02:37:07.4202842Z             },
2026-06-22T02:37:07.4202942Z             {
2026-06-22T02:37:07.4203092Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.4203197Z               "line": 279
2026-06-22T02:37:07.4203303Z             },
2026-06-22T02:37:07.4203407Z             {
2026-06-22T02:37:07.4203555Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:37:07.4203661Z               "line": 82
2026-06-22T02:37:07.4203760Z             },
2026-06-22T02:37:07.4203870Z             {
2026-06-22T02:37:07.4203999Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:37:07.4204113Z               "line": 99
2026-06-22T02:37:07.4204309Z             },
2026-06-22T02:37:07.4204413Z             {
2026-06-22T02:37:07.4204543Z               "path": "crates/spt-store/src/epoch.rs",
2026-06-22T02:37:07.4204642Z               "line": 119
2026-06-22T02:37:07.4204747Z             }
2026-06-22T02:37:07.4204843Z           ]
2026-06-22T02:37:07.4204961Z         }
2026-06-22T02:37:07.4205066Z       }
2026-06-22T02:37:07.4205168Z     },
2026-06-22T02:37:07.4205276Z     {
2026-06-22T02:37:07.4205419Z       "id": "REQ-HAZARD-REGISTRY-GHOST-ROWS",
2026-06-22T02:37:07.4206761Z       "title": "A dead node identity's registry rows must decay: only the per-(endpoint,node) epoch lease supersedes rows, so without eviction a vanished node's rows are immortal and poison bare-id resolution with phantom AcrossNodes ambiguity — evict rows whose author node has not been heard (admitted inbound feed) within the eviction window; own rows never decay; a revived node re-inserts from its durable epoch within one pump cadence (4.10)",
2026-06-22T02:37:07.4206899Z       "requiredStages": [
2026-06-22T02:37:07.4207003Z         "doc",
2026-06-22T02:37:07.4207115Z         "impl",
2026-06-22T02:37:07.4207219Z         "unit"
2026-06-22T02:37:07.4207323Z       ],
2026-06-22T02:37:07.4207430Z       "stages": {
2026-06-22T02:37:07.4207543Z         "doc": {
2026-06-22T02:37:07.4207671Z           "complete": true,
2026-06-22T02:37:07.4207782Z           "evidence": [
2026-06-22T02:37:07.4207886Z             {
2026-06-22T02:37:07.4208025Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4208140Z               "line": 157
2026-06-22T02:37:07.4208242Z             }
2026-06-22T02:37:07.4208347Z           ]
2026-06-22T02:37:07.4208452Z         },
2026-06-22T02:37:07.4208564Z         "impl": {
2026-06-22T02:37:07.4208674Z           "complete": true,
2026-06-22T02:37:07.4208784Z           "evidence": [
2026-06-22T02:37:07.4208889Z             {
2026-06-22T02:37:07.4209122Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:37:07.4209246Z               "line": 137
2026-06-22T02:37:07.4209352Z             },
2026-06-22T02:37:07.4209451Z             {
2026-06-22T02:37:07.4209609Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4209719Z               "line": 564
2026-06-22T02:37:07.4209829Z             },
2026-06-22T02:37:07.4209938Z             {
2026-06-22T02:37:07.4210090Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4210195Z               "line": 571
2026-06-22T02:37:07.4210297Z             },
2026-06-22T02:37:07.4210400Z             {
2026-06-22T02:37:07.4210543Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4210654Z               "line": 227
2026-06-22T02:37:07.4210762Z             }
2026-06-22T02:37:07.4210853Z           ]
2026-06-22T02:37:07.4210950Z         },
2026-06-22T02:37:07.4211054Z         "int": {
2026-06-22T02:37:07.4211162Z           "complete": false,
2026-06-22T02:37:07.4211272Z           "evidence": []
2026-06-22T02:37:07.4211383Z         },
2026-06-22T02:37:07.4211496Z         "unit": {
2026-06-22T02:37:07.4211601Z           "complete": true,
2026-06-22T02:37:07.4211716Z           "evidence": [
2026-06-22T02:37:07.4211815Z             {
2026-06-22T02:37:07.4211969Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4212197Z               "line": 1622
2026-06-22T02:37:07.4212293Z             },
2026-06-22T02:37:07.4212402Z             {
2026-06-22T02:37:07.4212550Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4212650Z               "line": 1680
2026-06-22T02:37:07.4212754Z             },
2026-06-22T02:37:07.4212861Z             {
2026-06-22T02:37:07.4213002Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4213108Z               "line": 883
2026-06-22T02:37:07.4213214Z             }
2026-06-22T02:37:07.4213312Z           ]
2026-06-22T02:37:07.4213407Z         }
2026-06-22T02:37:07.4213497Z       }
2026-06-22T02:37:07.4213696Z     },
2026-06-22T02:37:07.4213791Z     {
2026-06-22T02:37:07.4213930Z       "id": "REQ-HAZARD-REGISTRY-STALE-CLEAN",
2026-06-22T02:37:07.4214139Z       "title": "Stale registry entries degrade to fallback, never hard-fail (4.3)",
2026-06-22T02:37:07.4214254Z       "requiredStages": [
2026-06-22T02:37:07.4214363Z         "impl",
2026-06-22T02:37:07.4214474Z         "unit"
2026-06-22T02:37:07.4214583Z       ],
2026-06-22T02:37:07.4214687Z       "stages": {
2026-06-22T02:37:07.4214803Z         "doc": {
2026-06-22T02:37:07.4214907Z           "complete": false,
2026-06-22T02:37:07.4215021Z           "evidence": []
2026-06-22T02:37:07.4215127Z         },
2026-06-22T02:37:07.4215231Z         "impl": {
2026-06-22T02:37:07.4215345Z           "complete": true,
2026-06-22T02:37:07.4215447Z           "evidence": [
2026-06-22T02:37:07.4215545Z             {
2026-06-22T02:37:07.4215689Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4215799Z               "line": 15
2026-06-22T02:37:07.4215903Z             },
2026-06-22T02:37:07.4215999Z             {
2026-06-22T02:37:07.4216142Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4216251Z               "line": 55
2026-06-22T02:37:07.4216360Z             },
2026-06-22T02:37:07.4216464Z             {
2026-06-22T02:37:07.4216600Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4216716Z               "line": 66
2026-06-22T02:37:07.4216816Z             },
2026-06-22T02:37:07.4216925Z             {
2026-06-22T02:37:07.4217064Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4217178Z               "line": 115
2026-06-22T02:37:07.4217292Z             },
2026-06-22T02:37:07.4217383Z             {
2026-06-22T02:37:07.4217521Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4217631Z               "line": 138
2026-06-22T02:37:07.4217741Z             }
2026-06-22T02:37:07.4217840Z           ]
2026-06-22T02:37:07.4217946Z         },
2026-06-22T02:37:07.4218065Z         "int": {
2026-06-22T02:37:07.4218179Z           "complete": false,
2026-06-22T02:37:07.4218285Z           "evidence": []
2026-06-22T02:37:07.4218380Z         },
2026-06-22T02:37:07.4218484Z         "unit": {
2026-06-22T02:37:07.4218590Z           "complete": true,
2026-06-22T02:37:07.4218700Z           "evidence": [
2026-06-22T02:37:07.4218803Z             {
2026-06-22T02:37:07.4218931Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4219129Z               "line": 363
2026-06-22T02:37:07.4219234Z             },
2026-06-22T02:37:07.4219335Z             {
2026-06-22T02:37:07.4219472Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4219573Z               "line": 369
2026-06-22T02:37:07.4219678Z             },
2026-06-22T02:37:07.4219782Z             {
2026-06-22T02:37:07.4219921Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4220031Z               "line": 383
2026-06-22T02:37:07.4220130Z             },
2026-06-22T02:37:07.4220236Z             {
2026-06-22T02:37:07.4220364Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4220474Z               "line": 392
2026-06-22T02:37:07.4220575Z             },
2026-06-22T02:37:07.4220674Z             {
2026-06-22T02:37:07.4220813Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4221037Z               "line": 195
2026-06-22T02:37:07.4221142Z             },
2026-06-22T02:37:07.4221247Z             {
2026-06-22T02:37:07.4221390Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4221496Z               "line": 208
2026-06-22T02:37:07.4221595Z             },
2026-06-22T02:37:07.4221693Z             {
2026-06-22T02:37:07.4221832Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4221938Z               "line": 271
2026-06-22T02:37:07.4222046Z             },
2026-06-22T02:37:07.4222152Z             {
2026-06-22T02:37:07.4222286Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4222500Z               "line": 290
2026-06-22T02:37:07.4222605Z             },
2026-06-22T02:37:07.4222709Z             {
2026-06-22T02:37:07.4222853Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4222962Z               "line": 319
2026-06-22T02:37:07.4223077Z             }
2026-06-22T02:37:07.4223178Z           ]
2026-06-22T02:37:07.4223277Z         }
2026-06-22T02:37:07.4223372Z       }
2026-06-22T02:37:07.4223473Z     },
2026-06-22T02:37:07.4223576Z     {
2026-06-22T02:37:07.4223706Z       "id": "REQ-HAZARD-RESTART-IDEMPOTENT",
2026-06-22T02:37:07.4223995Z       "title": "Idempotent/exactly-once delivery across brain restart at every broker boundary (codex #14)",
2026-06-22T02:37:07.4224110Z       "requiredStages": [
2026-06-22T02:37:07.4224217Z         "impl",
2026-06-22T02:37:07.4224322Z         "unit",
2026-06-22T02:37:07.4224428Z         "int"
2026-06-22T02:37:07.4224532Z       ],
2026-06-22T02:37:07.4224632Z       "stages": {
2026-06-22T02:37:07.4224748Z         "doc": {
2026-06-22T02:37:07.4224852Z           "complete": false,
2026-06-22T02:37:07.4224965Z           "evidence": []
2026-06-22T02:37:07.4225058Z         },
2026-06-22T02:37:07.4225158Z         "impl": {
2026-06-22T02:37:07.4225257Z           "complete": true,
2026-06-22T02:37:07.4225363Z           "evidence": [
2026-06-22T02:37:07.4225477Z             {
2026-06-22T02:37:07.4225614Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4225725Z               "line": 480
2026-06-22T02:37:07.4225834Z             },
2026-06-22T02:37:07.4225939Z             {
2026-06-22T02:37:07.4226082Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4226191Z               "line": 1010
2026-06-22T02:37:07.4226297Z             },
2026-06-22T02:37:07.4226401Z             {
2026-06-22T02:37:07.4226540Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4226651Z               "line": 1055
2026-06-22T02:37:07.4226763Z             },
2026-06-22T02:37:07.4226862Z             {
2026-06-22T02:37:07.4227001Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4227099Z               "line": 1080
2026-06-22T02:37:07.4227203Z             },
2026-06-22T02:37:07.4227309Z             {
2026-06-22T02:37:07.4227451Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4227552Z               "line": 1678
2026-06-22T02:37:07.4227662Z             },
2026-06-22T02:37:07.4227766Z             {
2026-06-22T02:37:07.4227911Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4228025Z               "line": 1923
2026-06-22T02:37:07.4228124Z             },
2026-06-22T02:37:07.4228225Z             {
2026-06-22T02:37:07.4228367Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4228467Z               "line": 2054
2026-06-22T02:37:07.4228574Z             },
2026-06-22T02:37:07.4228682Z             {
2026-06-22T02:37:07.4228816Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4228926Z               "line": 2102
2026-06-22T02:37:07.4229116Z             },
2026-06-22T02:37:07.4229222Z             {
2026-06-22T02:37:07.4229354Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.4229468Z               "line": 46
2026-06-22T02:37:07.4229666Z             },
2026-06-22T02:37:07.4229770Z             {
2026-06-22T02:37:07.4229910Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.4230023Z               "line": 200
2026-06-22T02:37:07.4230128Z             },
2026-06-22T02:37:07.4230234Z             {
2026-06-22T02:37:07.4230357Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:37:07.4230468Z               "line": 132
2026-06-22T02:37:07.4230567Z             },
2026-06-22T02:37:07.4230676Z             {
2026-06-22T02:37:07.4230820Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.4230924Z               "line": 137
2026-06-22T02:37:07.4231126Z             },
2026-06-22T02:37:07.4231230Z             {
2026-06-22T02:37:07.4231368Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.4231478Z               "line": 183
2026-06-22T02:37:07.4231587Z             }
2026-06-22T02:37:07.4231688Z           ]
2026-06-22T02:37:07.4231789Z         },
2026-06-22T02:37:07.4231906Z         "int": {
2026-06-22T02:37:07.4232017Z           "complete": true,
2026-06-22T02:37:07.4232132Z           "evidence": [
2026-06-22T02:37:07.4232230Z             {
2026-06-22T02:37:07.4232388Z               "path": "crates/spt-daemon/tests/idempotent.rs",
2026-06-22T02:37:07.4232503Z               "line": 27
2026-06-22T02:37:07.4232596Z             },
2026-06-22T02:37:07.4232703Z             {
2026-06-22T02:37:07.4232846Z               "path": "crates/spt-daemon/tests/netbroker.rs",
2026-06-22T02:37:07.4232959Z               "line": 148
2026-06-22T02:37:07.4233060Z             },
2026-06-22T02:37:07.4233165Z             {
2026-06-22T02:37:07.4233307Z               "path": "crates/spt-daemon/tests/netstream.rs",
2026-06-22T02:37:07.4233423Z               "line": 200
2026-06-22T02:37:07.4233527Z             }
2026-06-22T02:37:07.4233627Z           ]
2026-06-22T02:37:07.4233723Z         },
2026-06-22T02:37:07.4233823Z         "unit": {
2026-06-22T02:37:07.4233942Z           "complete": true,
2026-06-22T02:37:07.4234047Z           "evidence": [
2026-06-22T02:37:07.4234151Z             {
2026-06-22T02:37:07.4234296Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.4234396Z               "line": 366
2026-06-22T02:37:07.4234499Z             },
2026-06-22T02:37:07.4234599Z             {
2026-06-22T02:37:07.4234741Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.4234849Z               "line": 398
2026-06-22T02:37:07.4234945Z             },
2026-06-22T02:37:07.4235056Z             {
2026-06-22T02:37:07.4235183Z               "path": "crates/spt-daemon/src/effect.rs",
2026-06-22T02:37:07.4235298Z               "line": 419
2026-06-22T02:37:07.4235407Z             },
2026-06-22T02:37:07.4235502Z             {
2026-06-22T02:37:07.4235651Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.4235750Z               "line": 631
2026-06-22T02:37:07.4235860Z             },
2026-06-22T02:37:07.4235961Z             {
2026-06-22T02:37:07.4236112Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:37:07.4236218Z               "line": 289
2026-06-22T02:37:07.4236318Z             },
2026-06-22T02:37:07.4236413Z             {
2026-06-22T02:37:07.4236552Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:37:07.4236665Z               "line": 230
2026-06-22T02:37:07.4236770Z             },
2026-06-22T02:37:07.4236882Z             {
2026-06-22T02:37:07.4237008Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.4237119Z               "line": 526
2026-06-22T02:37:07.4237230Z             },
2026-06-22T02:37:07.4237318Z             {
2026-06-22T02:37:07.4237466Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.4237575Z               "line": 556
2026-06-22T02:37:07.4237668Z             }
2026-06-22T02:37:07.4237778Z           ]
2026-06-22T02:37:07.4237879Z         }
2026-06-22T02:37:07.4237988Z       }
2026-06-22T02:37:07.4238078Z     },
2026-06-22T02:37:07.4238261Z     {
2026-06-22T02:37:07.4238402Z       "id": "REQ-HAZARD-ROLLBACK-STATE-COMPAT",
2026-06-22T02:37:07.4240221Z       "title": "A brain must not irreversibly migrate durable state before update ready-promotion: the readiness-gated auto-rollback (ADR-0018 Q7) spawns the N-1 binary against durable state the new brain may have written, so every pre-ready write must stay N-1-readable (schema migrations gated behind ready-promotion, or written N-1-tolerant/additive). Else the first in-place schema migration silently bricks rollback (KNOWN-HAZARDS 6.8). Free now — a 2026-06-09 audit confirmed zero state-migration code exists; unmintable retroactively once a migration ships.",
2026-06-22T02:37:07.4240460Z       "requiredStages": [
2026-06-22T02:37:07.4240564Z         "doc",
2026-06-22T02:37:07.4240674Z         "impl",
2026-06-22T02:37:07.4240780Z         "unit"
2026-06-22T02:37:07.4240883Z       ],
2026-06-22T02:37:07.4240989Z       "stages": {
2026-06-22T02:37:07.4241089Z         "doc": {
2026-06-22T02:37:07.4241265Z           "complete": true,
2026-06-22T02:37:07.4241380Z           "evidence": [
2026-06-22T02:37:07.4241489Z             {
2026-06-22T02:37:07.4241618Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4242010Z               "line": 314
2026-06-22T02:37:07.4242243Z             }
2026-06-22T02:37:07.4242481Z           ]
2026-06-22T02:37:07.4242687Z         },
2026-06-22T02:37:07.4242875Z         "impl": {
2026-06-22T02:37:07.4243105Z           "complete": true,
2026-06-22T02:37:07.4243344Z           "evidence": [
2026-06-22T02:37:07.4243558Z             {
2026-06-22T02:37:07.4243819Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:37:07.4244125Z               "line": 33
2026-06-22T02:37:07.4244349Z             },
2026-06-22T02:37:07.4244546Z             {
2026-06-22T02:37:07.4244798Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:37:07.4245092Z               "line": 39
2026-06-22T02:37:07.4245315Z             }
2026-06-22T02:37:07.4245524Z           ]
2026-06-22T02:37:07.4245757Z         },
2026-06-22T02:37:07.4245977Z         "int": {
2026-06-22T02:37:07.4246197Z           "complete": false,
2026-06-22T02:37:07.4246445Z           "evidence": []
2026-06-22T02:37:07.4246668Z         },
2026-06-22T02:37:07.4246873Z         "unit": {
2026-06-22T02:37:07.4247084Z           "complete": true,
2026-06-22T02:37:07.4247326Z           "evidence": [
2026-06-22T02:37:07.4247545Z             {
2026-06-22T02:37:07.4247804Z               "path": "crates/spt-daemon/src/rollback_compat.rs",
2026-06-22T02:37:07.4248103Z               "line": 95
2026-06-22T02:37:07.4248319Z             }
2026-06-22T02:37:07.4248543Z           ]
2026-06-22T02:37:07.4248745Z         }
2026-06-22T02:37:07.4249021Z       }
2026-06-22T02:37:07.4249220Z     },
2026-06-22T02:37:07.4249426Z     {
2026-06-22T02:37:07.4249655Z       "id": "REQ-HAZARD-ROSTER-GHOST",
2026-06-22T02:37:07.4252237Z       "title": "A LOCAL subnet roster entry whose backing perch is erased does NOT keep advertising Active (no phantom perch-less endpoint). `api session-end <id> --erase` removes the perch (owlery dir gone) but the subnet roster (identity/registry/<subnet>.json) keeps the endpoint's instance row ACTIVE with no backing perch; `endpoint stop` says 'address unregistered' yet the line persists; no CLI verb forgets a roster entry, and a hand-edit is re-added by the single-writer daemon advertiser. FIX: daemon-side self-heal — the advertiser DROPS/forgets a LOCAL roster entry whose backing perch no longer exists (stops advertising it Active), and/or a `forget`/evict verb; verify whether the epoch lease eventually evicts it (slow-self-heal) vs a real leak and scope accordingly. doyle secondary finding (perri). (post-v0.10.0)",
2026-06-22T02:37:07.4254384Z       "requiredStages": [
2026-06-22T02:37:07.4254628Z         "impl",
2026-06-22T02:37:07.4254834Z         "unit"
2026-06-22T02:37:07.4255038Z       ],
2026-06-22T02:37:07.4255238Z       "stages": {
2026-06-22T02:37:07.4255436Z         "doc": {
2026-06-22T02:37:07.4255795Z           "complete": false,
2026-06-22T02:37:07.4256041Z           "evidence": []
2026-06-22T02:37:07.4256312Z         },
2026-06-22T02:37:07.4256518Z         "impl": {
2026-06-22T02:37:07.4256738Z           "complete": true,
2026-06-22T02:37:07.4256961Z           "evidence": [
2026-06-22T02:37:07.4257181Z             {
2026-06-22T02:37:07.4257443Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4257748Z               "line": 488
2026-06-22T02:37:07.4257964Z             }
2026-06-22T02:37:07.4258168Z           ]
2026-06-22T02:37:07.4258364Z         },
2026-06-22T02:37:07.4258571Z         "int": {
2026-06-22T02:37:07.4258889Z           "complete": false,
2026-06-22T02:37:07.4259208Z           "evidence": []
2026-06-22T02:37:07.4259475Z         },
2026-06-22T02:37:07.4259685Z         "unit": {
2026-06-22T02:37:07.4259905Z           "complete": true,
2026-06-22T02:37:07.4260143Z           "evidence": [
2026-06-22T02:37:07.4260376Z             {
2026-06-22T02:37:07.4260635Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4260936Z               "line": 1466
2026-06-22T02:37:07.4261153Z             }
2026-06-22T02:37:07.4261355Z           ]
2026-06-22T02:37:07.4261552Z         }
2026-06-22T02:37:07.4261751Z       }
2026-06-22T02:37:07.4261957Z     },
2026-06-22T02:37:07.4262153Z     {
2026-06-22T02:37:07.4262371Z       "id": "REQ-HAZARD-SELF-ELEVATE",
2026-06-22T02:37:07.4264683Z       "title": "Self-elevation (REQ-ELEVATE-1) re-runs the EXACT original invocation with the binary's ABSOLUTE exe path — never widening privilege scope, never adding/altering args, never via a PATH-resolved bare name, never via a shell-interpolated command string (argv-array only, no `sh -c`); the elevated child drops state back to the user (composes with the 5.7 de-elevation) and NEVER re-elevates (loop-safe: decide_elevation_path returns AlreadyElevated whenever the process is already Elevated, on every OS). The user's UAC/polkit/sudo prompt is the only consent gate — we never bypass it; the print-hint floor prints the absolute-path command too. The unprivileged parent never depends on (pipes/captures) the privileged child's stdout.",
2026-06-22T02:37:07.4266658Z       "requiredStages": [
2026-06-22T02:37:07.4266887Z         "unit"
2026-06-22T02:37:07.4267083Z       ],
2026-06-22T02:37:07.4267288Z       "stages": {
2026-06-22T02:37:07.4267497Z         "doc": {
2026-06-22T02:37:07.4267717Z           "complete": false,
2026-06-22T02:37:07.4267961Z           "evidence": []
2026-06-22T02:37:07.4268180Z         },
2026-06-22T02:37:07.4268374Z         "impl": {
2026-06-22T02:37:07.4268595Z           "complete": true,
2026-06-22T02:37:07.4268838Z           "evidence": [
2026-06-22T02:37:07.4269146Z             {
2026-06-22T02:37:07.4269396Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4269669Z               "line": 3520
2026-06-22T02:37:07.4269894Z             },
2026-06-22T02:37:07.4270088Z             {
2026-06-22T02:37:07.4270317Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4270579Z               "line": 3572
2026-06-22T02:37:07.4270804Z             },
2026-06-22T02:37:07.4271003Z             {
2026-06-22T02:37:07.4271228Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4271491Z               "line": 3617
2026-06-22T02:37:07.4271713Z             },
2026-06-22T02:37:07.4271915Z             {
2026-06-22T02:37:07.4272150Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4272427Z               "line": 92
2026-06-22T02:37:07.4272640Z             },
2026-06-22T02:37:07.4272841Z             {
2026-06-22T02:37:07.4273071Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4273347Z               "line": 148
2026-06-22T02:37:07.4273575Z             },
2026-06-22T02:37:07.4273780Z             {
2026-06-22T02:37:07.4274006Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4274278Z               "line": 192
2026-06-22T02:37:07.4274618Z             },
2026-06-22T02:37:07.4274813Z             {
2026-06-22T02:37:07.4275038Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4275311Z               "line": 200
2026-06-22T02:37:07.4275534Z             },
2026-06-22T02:37:07.4275734Z             {
2026-06-22T02:37:07.4275968Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4276246Z               "line": 211
2026-06-22T02:37:07.4276473Z             },
2026-06-22T02:37:07.4276678Z             {
2026-06-22T02:37:07.4276911Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4277190Z               "line": 265
2026-06-22T02:37:07.4277524Z             },
2026-06-22T02:37:07.4277724Z             {
2026-06-22T02:37:07.4277962Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4278234Z               "line": 279
2026-06-22T02:37:07.4278454Z             }
2026-06-22T02:37:07.4278663Z           ]
2026-06-22T02:37:07.4278864Z         },
2026-06-22T02:37:07.4279169Z         "int": {
2026-06-22T02:37:07.4279398Z           "complete": false,
2026-06-22T02:37:07.4279639Z           "evidence": []
2026-06-22T02:37:07.4279862Z         },
2026-06-22T02:37:07.4280067Z         "unit": {
2026-06-22T02:37:07.4280290Z           "complete": true,
2026-06-22T02:37:07.4280525Z           "evidence": [
2026-06-22T02:37:07.4280735Z             {
2026-06-22T02:37:07.4280963Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4281235Z               "line": 419
2026-06-22T02:37:07.4281454Z             },
2026-06-22T02:37:07.4281651Z             {
2026-06-22T02:37:07.4281878Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4282168Z               "line": 470
2026-06-22T02:37:07.4282387Z             },
2026-06-22T02:37:07.4282590Z             {
2026-06-22T02:37:07.4282814Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4283087Z               "line": 499
2026-06-22T02:37:07.4283306Z             },
2026-06-22T02:37:07.4283510Z             {
2026-06-22T02:37:07.4283730Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4284007Z               "line": 526
2026-06-22T02:37:07.4284227Z             }
2026-06-22T02:37:07.4284431Z           ]
2026-06-22T02:37:07.4284632Z         }
2026-06-22T02:37:07.4284823Z       }
2026-06-22T02:37:07.4285026Z     },
2026-06-22T02:37:07.4285217Z     {
2026-06-22T02:37:07.4285450Z       "id": "REQ-HAZARD-SINGLE-PATH-SOURCE",
2026-06-22T02:37:07.4285828Z       "title": "Single path/registry source of truth; no layout ambiguity (6.1)",
2026-06-22T02:37:07.4286186Z       "requiredStages": [
2026-06-22T02:37:07.4290357Z         "impl",
2026-06-22T02:37:07.4290641Z         "unit"
2026-06-22T02:37:07.4290846Z       ],
2026-06-22T02:37:07.4291047Z       "stages": {
2026-06-22T02:37:07.4291262Z         "doc": {
2026-06-22T02:37:07.4291485Z           "complete": false,
2026-06-22T02:37:07.4291738Z           "evidence": []
2026-06-22T02:37:07.4291962Z         },
2026-06-22T02:37:07.4292167Z         "impl": {
2026-06-22T02:37:07.4292390Z           "complete": true,
2026-06-22T02:37:07.4292635Z           "evidence": [
2026-06-22T02:37:07.4292847Z             {
2026-06-22T02:37:07.4293107Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4293407Z               "line": 62
2026-06-22T02:37:07.4293623Z             },
2026-06-22T02:37:07.4293828Z             {
2026-06-22T02:37:07.4294085Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4294375Z               "line": 71
2026-06-22T02:37:07.4294605Z             },
2026-06-22T02:37:07.4294796Z             {
2026-06-22T02:37:07.4295044Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4295339Z               "line": 80
2026-06-22T02:37:07.4295563Z             },
2026-06-22T02:37:07.4295753Z             {
2026-06-22T02:37:07.4295996Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4296291Z               "line": 88
2026-06-22T02:37:07.4296659Z             },
2026-06-22T02:37:07.4296840Z             {
2026-06-22T02:37:07.4297079Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4297356Z               "line": 33
2026-06-22T02:37:07.4297569Z             },
2026-06-22T02:37:07.4297765Z             {
2026-06-22T02:37:07.4298012Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4298310Z               "line": 65
2026-06-22T02:37:07.4298524Z             },
2026-06-22T02:37:07.4298725Z             {
2026-06-22T02:37:07.4299045Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4299331Z               "line": 74
2026-06-22T02:37:07.4299651Z             },
2026-06-22T02:37:07.4299845Z             {
2026-06-22T02:37:07.4300079Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4300345Z               "line": 93
2026-06-22T02:37:07.4300562Z             },
2026-06-22T02:37:07.4300769Z             {
2026-06-22T02:37:07.4301001Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4301278Z               "line": 102
2026-06-22T02:37:07.4301502Z             },
2026-06-22T02:37:07.4301701Z             {
2026-06-22T02:37:07.4301926Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4302198Z               "line": 111
2026-06-22T02:37:07.4302417Z             },
2026-06-22T02:37:07.4302622Z             {
2026-06-22T02:37:07.4302842Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4303115Z               "line": 122
2026-06-22T02:37:07.4303331Z             },
2026-06-22T02:37:07.4303535Z             {
2026-06-22T02:37:07.4303768Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4304049Z               "line": 140
2026-06-22T02:37:07.4304273Z             },
2026-06-22T02:37:07.4304474Z             {
2026-06-22T02:37:07.4304713Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4304984Z               "line": 149
2026-06-22T02:37:07.4305208Z             },
2026-06-22T02:37:07.4305404Z             {
2026-06-22T02:37:07.4305638Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4305914Z               "line": 158
2026-06-22T02:37:07.4306127Z             },
2026-06-22T02:37:07.4306323Z             {
2026-06-22T02:37:07.4306566Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4306837Z               "line": 169
2026-06-22T02:37:07.4307062Z             },
2026-06-22T02:37:07.4307272Z             {
2026-06-22T02:37:07.4307500Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4307782Z               "line": 177
2026-06-22T02:37:07.4307997Z             },
2026-06-22T02:37:07.4308202Z             {
2026-06-22T02:37:07.4308439Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4308703Z               "line": 186
2026-06-22T02:37:07.4308923Z             },
2026-06-22T02:37:07.4309199Z             {
2026-06-22T02:37:07.4309428Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4309704Z               "line": 195
2026-06-22T02:37:07.4309924Z             },
2026-06-22T02:37:07.4310125Z             {
2026-06-22T02:37:07.4310362Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4310639Z               "line": 204
2026-06-22T02:37:07.4310869Z             },
2026-06-22T02:37:07.4311070Z             {
2026-06-22T02:37:07.4311296Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4311561Z               "line": 216
2026-06-22T02:37:07.4311776Z             },
2026-06-22T02:37:07.4311976Z             {
2026-06-22T02:37:07.4312200Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4312491Z               "line": 223
2026-06-22T02:37:07.4312706Z             },
2026-06-22T02:37:07.4312905Z             {
2026-06-22T02:37:07.4313134Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4313412Z               "line": 232
2026-06-22T02:37:07.4313632Z             },
2026-06-22T02:37:07.4313939Z             {
2026-06-22T02:37:07.4314180Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4314466Z               "line": 239
2026-06-22T02:37:07.4314686Z             },
2026-06-22T02:37:07.4314876Z             {
2026-06-22T02:37:07.4315119Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4315391Z               "line": 306
2026-06-22T02:37:07.4315612Z             },
2026-06-22T02:37:07.4315801Z             {
2026-06-22T02:37:07.4316030Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4316307Z               "line": 318
2026-06-22T02:37:07.4316532Z             },
2026-06-22T02:37:07.4316854Z             {
2026-06-22T02:37:07.4317087Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4317364Z               "line": 405
2026-06-22T02:37:07.4317584Z             }
2026-06-22T02:37:07.4317784Z           ]
2026-06-22T02:37:07.4317985Z         },
2026-06-22T02:37:07.4318185Z         "int": {
2026-06-22T02:37:07.4318409Z           "complete": false,
2026-06-22T02:37:07.4318652Z           "evidence": []
2026-06-22T02:37:07.4318872Z         },
2026-06-22T02:37:07.4319142Z         "unit": {
2026-06-22T02:37:07.4319363Z           "complete": true,
2026-06-22T02:37:07.4319588Z           "evidence": [
2026-06-22T02:37:07.4319803Z             {
2026-06-22T02:37:07.4320031Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4320302Z               "line": 487
2026-06-22T02:37:07.4320523Z             },
2026-06-22T02:37:07.4320718Z             {
2026-06-22T02:37:07.4320937Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4321218Z               "line": 528
2026-06-22T02:37:07.4321420Z             },
2026-06-22T02:37:07.4321620Z             {
2026-06-22T02:37:07.4321852Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4322112Z               "line": 541
2026-06-22T02:37:07.4322341Z             },
2026-06-22T02:37:07.4322540Z             {
2026-06-22T02:37:07.4322770Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4323046Z               "line": 627
2026-06-22T02:37:07.4323256Z             }
2026-06-22T02:37:07.4323451Z           ]
2026-06-22T02:37:07.4323648Z         }
2026-06-22T02:37:07.4323842Z       }
2026-06-22T02:37:07.4324032Z     },
2026-06-22T02:37:07.4324215Z     {
2026-06-22T02:37:07.4324438Z       "id": "REQ-HAZARD-SOFT-CLEANUP",
2026-06-22T02:37:07.4324806Z       "title": "Soft-cleanup preserves state, removes only the ready marker (6.2)",
2026-06-22T02:37:07.4325160Z       "requiredStages": [
2026-06-22T02:37:07.4325393Z         "impl",
2026-06-22T02:37:07.4325604Z         "unit"
2026-06-22T02:37:07.4325809Z       ],
2026-06-22T02:37:07.4326013Z       "stages": {
2026-06-22T02:37:07.4326233Z         "doc": {
2026-06-22T02:37:07.4326448Z           "complete": false,
2026-06-22T02:37:07.4326691Z           "evidence": []
2026-06-22T02:37:07.4326909Z         },
2026-06-22T02:37:07.4327116Z         "impl": {
2026-06-22T02:37:07.4327328Z           "complete": true,
2026-06-22T02:37:07.4327567Z           "evidence": [
2026-06-22T02:37:07.4327782Z             {
2026-06-22T02:37:07.4328020Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4328305Z               "line": 175
2026-06-22T02:37:07.4328525Z             },
2026-06-22T02:37:07.4328717Z             {
2026-06-22T02:37:07.4329032Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.4329317Z               "line": 171
2026-06-22T02:37:07.4329544Z             }
2026-06-22T02:37:07.4329740Z           ]
2026-06-22T02:37:07.4329933Z         },
2026-06-22T02:37:07.4330148Z         "int": {
2026-06-22T02:37:07.4330368Z           "complete": false,
2026-06-22T02:37:07.4330596Z           "evidence": []
2026-06-22T02:37:07.4330801Z         },
2026-06-22T02:37:07.4330997Z         "unit": {
2026-06-22T02:37:07.4331216Z           "complete": true,
2026-06-22T02:37:07.4331445Z           "evidence": [
2026-06-22T02:37:07.4331779Z             {
2026-06-22T02:37:07.4332017Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4332299Z               "line": 297
2026-06-22T02:37:07.4332512Z             },
2026-06-22T02:37:07.4332714Z             {
2026-06-22T02:37:07.4332958Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.4333235Z               "line": 836
2026-06-22T02:37:07.4333453Z             },
2026-06-22T02:37:07.4333659Z             {
2026-06-22T02:37:07.4333903Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.4334180Z               "line": 849
2026-06-22T02:37:07.4334398Z             }
2026-06-22T02:37:07.4334693Z           ]
2026-06-22T02:37:07.4334894Z         }
2026-06-22T02:37:07.4335079Z       }
2026-06-22T02:37:07.4335267Z     },
2026-06-22T02:37:07.4335458Z     {
2026-06-22T02:37:07.4335686Z       "id": "REQ-HAZARD-STALE-INDEX-LOCK",
2026-06-22T02:37:07.4336010Z       "title": "Sweep stale lockfiles on daemon boot (1.3)",
2026-06-22T02:37:07.4336325Z       "requiredStages": [
2026-06-22T02:37:07.4336550Z         "impl",
2026-06-22T02:37:07.4336760Z         "unit"
2026-06-22T02:37:07.4336974Z       ],
2026-06-22T02:37:07.4337164Z       "stages": {
2026-06-22T02:37:07.4337371Z         "doc": {
2026-06-22T02:37:07.4337589Z           "complete": false,
2026-06-22T02:37:07.4337836Z           "evidence": []
2026-06-22T02:37:07.4338047Z         },
2026-06-22T02:37:07.4338251Z         "impl": {
2026-06-22T02:37:07.4338465Z           "complete": true,
2026-06-22T02:37:07.4338709Z           "evidence": [
2026-06-22T02:37:07.4338919Z             {
2026-06-22T02:37:07.4339248Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4339544Z               "line": 116
2026-06-22T02:37:07.4339762Z             },
2026-06-22T02:37:07.4339963Z             {
2026-06-22T02:37:07.4340229Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.4340517Z               "line": 507
2026-06-22T02:37:07.4340737Z             }
2026-06-22T02:37:07.4340933Z           ]
2026-06-22T02:37:07.4341132Z         },
2026-06-22T02:37:07.4341319Z         "int": {
2026-06-22T02:37:07.4341538Z           "complete": false,
2026-06-22T02:37:07.4341762Z           "evidence": []
2026-06-22T02:37:07.4341981Z         },
2026-06-22T02:37:07.4342187Z         "unit": {
2026-06-22T02:37:07.4342401Z           "complete": true,
2026-06-22T02:37:07.4342629Z           "evidence": [
2026-06-22T02:37:07.4342850Z             {
2026-06-22T02:37:07.4343086Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.4343370Z               "line": 541
2026-06-22T02:37:07.4343590Z             }
2026-06-22T02:37:07.4343795Z           ]
2026-06-22T02:37:07.4343994Z         }
2026-06-22T02:37:07.4344186Z       }
2026-06-22T02:37:07.4344382Z     },
2026-06-22T02:37:07.4344567Z     {
2026-06-22T02:37:07.4344806Z       "id": "REQ-HAZARD-STALE-SIGNOFF-SENTINEL",
2026-06-22T02:37:07.4345167Z       "title": "Stale signoff sentinel does not kill a fresh start (3.2)",
2026-06-22T02:37:07.4345510Z       "requiredStages": [
2026-06-22T02:37:07.4345734Z         "impl",
2026-06-22T02:37:07.4345931Z         "unit"
2026-06-22T02:37:07.4346147Z       ],
2026-06-22T02:37:07.4346353Z       "stages": {
2026-06-22T02:37:07.4346561Z         "doc": {
2026-06-22T02:37:07.4346786Z           "complete": false,
2026-06-22T02:37:07.4347029Z           "evidence": []
2026-06-22T02:37:07.4347254Z         },
2026-06-22T02:37:07.4347453Z         "impl": {
2026-06-22T02:37:07.4347677Z           "complete": true,
2026-06-22T02:37:07.4347917Z           "evidence": [
2026-06-22T02:37:07.4348140Z             {
2026-06-22T02:37:07.4348391Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4348687Z               "line": 552
2026-06-22T02:37:07.4348912Z             },
2026-06-22T02:37:07.4349184Z             {
2026-06-22T02:37:07.4349431Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.4349702Z               "line": 28
2026-06-22T02:37:07.4350027Z             }
2026-06-22T02:37:07.4350232Z           ]
2026-06-22T02:37:07.4350428Z         },
2026-06-22T02:37:07.4350627Z         "int": {
2026-06-22T02:37:07.4350841Z           "complete": false,
2026-06-22T02:37:07.4351073Z           "evidence": []
2026-06-22T02:37:07.4351292Z         },
2026-06-22T02:37:07.4351488Z         "unit": {
2026-06-22T02:37:07.4351707Z           "complete": true,
2026-06-22T02:37:07.4351935Z           "evidence": [
2026-06-22T02:37:07.4352151Z             {
2026-06-22T02:37:07.4352390Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.4352671Z               "line": 229
2026-06-22T02:37:07.4353015Z             }
2026-06-22T02:37:07.4353214Z           ]
2026-06-22T02:37:07.4353410Z         }
2026-06-22T02:37:07.4353603Z       }
2026-06-22T02:37:07.4353792Z     },
2026-06-22T02:37:07.4353988Z     {
2026-06-22T02:37:07.4354220Z       "id": "REQ-HAZARD-STDIN-SESSION-ID",
2026-06-22T02:37:07.4354540Z       "title": "Stdin session_id precedence over env (2.2)",
2026-06-22T02:37:07.4354854Z       "requiredStages": [],
2026-06-22T02:37:07.4355074Z       "stages": {
2026-06-22T02:37:07.4355285Z         "doc": {
2026-06-22T02:37:07.4355494Z           "complete": false,
2026-06-22T02:37:07.4355732Z           "evidence": []
2026-06-22T02:37:07.4355962Z         },
2026-06-22T02:37:07.4356174Z         "impl": {
2026-06-22T02:37:07.4356392Z           "complete": false,
2026-06-22T02:37:07.4356626Z           "evidence": []
2026-06-22T02:37:07.4356840Z         },
2026-06-22T02:37:07.4357036Z         "int": {
2026-06-22T02:37:07.4357246Z           "complete": false,
2026-06-22T02:37:07.4357475Z           "evidence": []
2026-06-22T02:37:07.4357694Z         },
2026-06-22T02:37:07.4357899Z         "unit": {
2026-06-22T02:37:07.4358114Z           "complete": false,
2026-06-22T02:37:07.4358361Z           "evidence": []
2026-06-22T02:37:07.4358581Z         }
2026-06-22T02:37:07.4358778Z       }
2026-06-22T02:37:07.4359046Z     },
2026-06-22T02:37:07.4359257Z     {
2026-06-22T02:37:07.4359477Z       "id": "REQ-HAZARD-SUBPROCESS-TIMEOUT",
2026-06-22T02:37:07.4359806Z       "title": "Every harness/git subprocess has a timeout (5.3)",
2026-06-22T02:37:07.4360121Z       "requiredStages": [
2026-06-22T02:37:07.4360349Z         "impl",
2026-06-22T02:37:07.4360549Z         "unit"
2026-06-22T02:37:07.4360755Z       ],
2026-06-22T02:37:07.4360950Z       "stages": {
2026-06-22T02:37:07.4361163Z         "doc": {
2026-06-22T02:37:07.4361378Z           "complete": false,
2026-06-22T02:37:07.4361613Z           "evidence": []
2026-06-22T02:37:07.4361823Z         },
2026-06-22T02:37:07.4362039Z         "impl": {
2026-06-22T02:37:07.4362286Z           "complete": true,
2026-06-22T02:37:07.4362519Z           "evidence": [
2026-06-22T02:37:07.4362739Z             {
2026-06-22T02:37:07.4362988Z               "path": "crates/spt-live/src/turn.rs",
2026-06-22T02:37:07.4363250Z               "line": 19
2026-06-22T02:37:07.4363468Z             },
2026-06-22T02:37:07.4363678Z             {
2026-06-22T02:37:07.4363928Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4364226Z               "line": 463
2026-06-22T02:37:07.4364447Z             },
2026-06-22T02:37:07.4364644Z             {
2026-06-22T02:37:07.4364882Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4365178Z               "line": 499
2026-06-22T02:37:07.4365401Z             },
2026-06-22T02:37:07.4365597Z             {
2026-06-22T02:37:07.4365841Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4366132Z               "line": 547
2026-06-22T02:37:07.4366350Z             },
2026-06-22T02:37:07.4366556Z             {
2026-06-22T02:37:07.4370042Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:37:07.4370389Z               "line": 15
2026-06-22T02:37:07.4370623Z             },
2026-06-22T02:37:07.4370832Z             {
2026-06-22T02:37:07.4371080Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:37:07.4371529Z               "line": 48
2026-06-22T02:37:07.4371743Z             },
2026-06-22T02:37:07.4371947Z             {
2026-06-22T02:37:07.4372178Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:37:07.4372450Z               "line": 119
2026-06-22T02:37:07.4372675Z             },
2026-06-22T02:37:07.4372876Z             {
2026-06-22T02:37:07.4373099Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4373370Z               "line": 3948
2026-06-22T02:37:07.4373599Z             }
2026-06-22T02:37:07.4373786Z           ]
2026-06-22T02:37:07.4373981Z         },
2026-06-22T02:37:07.4374178Z         "int": {
2026-06-22T02:37:07.4374507Z           "complete": false,
2026-06-22T02:37:07.4374619Z           "evidence": []
2026-06-22T02:37:07.4374723Z         },
2026-06-22T02:37:07.4374829Z         "unit": {
2026-06-22T02:37:07.4374936Z           "complete": true,
2026-06-22T02:37:07.4375040Z           "evidence": [
2026-06-22T02:37:07.4375142Z             {
2026-06-22T02:37:07.4375303Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4375413Z               "line": 765
2026-06-22T02:37:07.4375518Z             },
2026-06-22T02:37:07.4375627Z             {
2026-06-22T02:37:07.4375767Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:37:07.4375871Z               "line": 165
2026-06-22T02:37:07.4375975Z             },
2026-06-22T02:37:07.4376077Z             {
2026-06-22T02:37:07.4376224Z               "path": "crates/spt-store/src/gitrun.rs",
2026-06-22T02:37:07.4376333Z               "line": 175
2026-06-22T02:37:07.4376443Z             }
2026-06-22T02:37:07.4376547Z           ]
2026-06-22T02:37:07.4376653Z         }
2026-06-22T02:37:07.4376749Z       }
2026-06-22T02:37:07.4376848Z     },
2026-06-22T02:37:07.4376953Z     {
2026-06-22T02:37:07.4377087Z       "id": "REQ-HAZARD-SUDO-SECURE-PATH",
2026-06-22T02:37:07.4378085Z       "title": "Elevation guidance on Unix names the binary's ABSOLUTE path under sudo (a user-local install ~/.local/bin · ~/.cargo/bin is not on sudo's secure_path, so bare `sudo spt` dies 'command not found'); gated commands auto-elevate on an interactive TTY, else print the runnable hint (5.10)",
2026-06-22T02:37:07.4378212Z       "requiredStages": [
2026-06-22T02:37:07.4378324Z         "impl",
2026-06-22T02:37:07.4378428Z         "unit"
2026-06-22T02:37:07.4378532Z       ],
2026-06-22T02:37:07.4378648Z       "stages": {
2026-06-22T02:37:07.4378752Z         "doc": {
2026-06-22T02:37:07.4378871Z           "complete": false,
2026-06-22T02:37:07.4379053Z           "evidence": []
2026-06-22T02:37:07.4379153Z         },
2026-06-22T02:37:07.4379264Z         "impl": {
2026-06-22T02:37:07.4379391Z           "complete": true,
2026-06-22T02:37:07.4379500Z           "evidence": [
2026-06-22T02:37:07.4379593Z             {
2026-06-22T02:37:07.4379739Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4379845Z               "line": 192
2026-06-22T02:37:07.4379955Z             },
2026-06-22T02:37:07.4380067Z             {
2026-06-22T02:37:07.4380196Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4380306Z               "line": 279
2026-06-22T02:37:07.4380406Z             }
2026-06-22T02:37:07.4380515Z           ]
2026-06-22T02:37:07.4380616Z         },
2026-06-22T02:37:07.4380725Z         "int": {
2026-06-22T02:37:07.4380845Z           "complete": false,
2026-06-22T02:37:07.4380954Z           "evidence": []
2026-06-22T02:37:07.4381054Z         },
2026-06-22T02:37:07.4381154Z         "unit": {
2026-06-22T02:37:07.4381274Z           "complete": true,
2026-06-22T02:37:07.4381383Z           "evidence": [
2026-06-22T02:37:07.4381489Z             {
2026-06-22T02:37:07.4381631Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4381731Z               "line": 470
2026-06-22T02:37:07.4381837Z             },
2026-06-22T02:37:07.4381946Z             {
2026-06-22T02:37:07.4382080Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.4382190Z               "line": 526
2026-06-22T02:37:07.4382402Z             }
2026-06-22T02:37:07.4382507Z           ]
2026-06-22T02:37:07.4382606Z         }
2026-06-22T02:37:07.4382705Z       }
2026-06-22T02:37:07.4382801Z     },
2026-06-22T02:37:07.4382907Z     {
2026-06-22T02:37:07.4383039Z       "id": "REQ-HAZARD-TEMPLATE-ARGV-FILL",
2026-06-22T02:37:07.4386874Z       "title": "Command-template substitution fills argv ELEMENTS, not a re-tokenized string: spt-core currently `fill_template`s {key} values INTO the command STRING and THEN `tokenize`s the filled string (runtime.rs:94/122), so a multi-word {key} value whitespace-SPLITS into multiple argv tokens unless the adapter hand-quotes the placeholder, and a value containing a `\"` (or `;`) injects/breaks tokenization (shell-injection-adjacent). A filled value MUST become exactly ONE argv element regardless of spaces/quotes in the value. Fix: tokenize the TEMPLATE into argv FIRST, then `fill_template` EACH token, so a `{key}` slot resolves to a single element and the value never participates in tokenization (no whitespace-split, no quote/semicolon injection); preserve the missing-key / empty-command errors and `{{`/`}}` non-interpretation. perri's F-009 (v0.8.1 dogfood, argv-capture-confirmed): a multi-word `{psyche_prompt}` = \"PSYCHE REVIVAL time: epoch-ms:… incoming event: (none)\" arrived as argv[6..12] (7 stray tokens), the harness runner strict-parsed `--prompt` against the 2nd word, exited 2 within ~1s → phantom hosted perch. Applies to EVERY [session.<role>] template (psyche_init, extractor, notif, …); digest survives today only because its fills ({session_id}/{source}) are single-token.",
2026-06-22T02:37:07.4387151Z       "requiredStages": [
2026-06-22T02:37:07.4387262Z         "impl",
2026-06-22T02:37:07.4387365Z         "unit",
2026-06-22T02:37:07.4387466Z         "int"
2026-06-22T02:37:07.4387571Z       ],
2026-06-22T02:37:07.4387676Z       "stages": {
2026-06-22T02:37:07.4387779Z         "doc": {
2026-06-22T02:37:07.4387898Z           "complete": false,
2026-06-22T02:37:07.4388021Z           "evidence": []
2026-06-22T02:37:07.4388124Z         },
2026-06-22T02:37:07.4388230Z         "impl": {
2026-06-22T02:37:07.4388340Z           "complete": true,
2026-06-22T02:37:07.4388449Z           "evidence": [
2026-06-22T02:37:07.4388555Z             {
2026-06-22T02:37:07.4388716Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.4388826Z               "line": 116
2026-06-22T02:37:07.4388926Z             },
2026-06-22T02:37:07.4389121Z             {
2026-06-22T02:37:07.4389270Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.4389379Z               "line": 132
2026-06-22T02:37:07.4389484Z             },
2026-06-22T02:37:07.4389589Z             {
2026-06-22T02:37:07.4389736Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.4389847Z               "line": 434
2026-06-22T02:37:07.4389946Z             },
2026-06-22T02:37:07.4390051Z             {
2026-06-22T02:37:07.4390191Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4390304Z               "line": 139
2026-06-22T02:37:07.4390405Z             },
2026-06-22T02:37:07.4390510Z             {
2026-06-22T02:37:07.4390656Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4390775Z               "line": 326
2026-06-22T02:37:07.4390876Z             },
2026-06-22T02:37:07.4390980Z             {
2026-06-22T02:37:07.4391124Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4391229Z               "line": 555
2026-06-22T02:37:07.4391327Z             }
2026-06-22T02:37:07.4391420Z           ]
2026-06-22T02:37:07.4391520Z         },
2026-06-22T02:37:07.4391628Z         "int": {
2026-06-22T02:37:07.4391749Z           "complete": true,
2026-06-22T02:37:07.4391858Z           "evidence": [
2026-06-22T02:37:07.4391962Z             {
2026-06-22T02:37:07.4392140Z               "path": "crates/spt/tests/livehost_nonresident_e2e.rs",
2026-06-22T02:37:07.4392249Z               "line": 32
2026-06-22T02:37:07.4392464Z             }
2026-06-22T02:37:07.4392573Z           ]
2026-06-22T02:37:07.4392673Z         },
2026-06-22T02:37:07.4392788Z         "unit": {
2026-06-22T02:37:07.4392896Z           "complete": true,
2026-06-22T02:37:07.4393010Z           "evidence": [
2026-06-22T02:37:07.4393105Z             {
2026-06-22T02:37:07.4393246Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4393356Z               "line": 625
2026-06-22T02:37:07.4393458Z             },
2026-06-22T02:37:07.4393565Z             {
2026-06-22T02:37:07.4393715Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4393918Z               "line": 646
2026-06-22T02:37:07.4394025Z             },
2026-06-22T02:37:07.4394138Z             {
2026-06-22T02:37:07.4394287Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4394391Z               "line": 662
2026-06-22T02:37:07.4394495Z             },
2026-06-22T02:37:07.4394596Z             {
2026-06-22T02:37:07.4394753Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4394853Z               "line": 680
2026-06-22T02:37:07.4394959Z             },
2026-06-22T02:37:07.4395068Z             {
2026-06-22T02:37:07.4395206Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4395312Z               "line": 704
2026-06-22T02:37:07.4395415Z             }
2026-06-22T02:37:07.4395521Z           ]
2026-06-22T02:37:07.4395622Z         }
2026-06-22T02:37:07.4395716Z       }
2026-06-22T02:37:07.4395806Z     },
2026-06-22T02:37:07.4395906Z     {
2026-06-22T02:37:07.4396043Z       "id": "REQ-HAZARD-UNC-PATH-STRIP",
2026-06-22T02:37:07.4396228Z       "title": "Strip Windows UNC prefix on serialized paths (5.4)",
2026-06-22T02:37:07.4396339Z       "requiredStages": [
2026-06-22T02:37:07.4396442Z         "impl",
2026-06-22T02:37:07.4396548Z         "unit"
2026-06-22T02:37:07.4396653Z       ],
2026-06-22T02:37:07.4396752Z       "stages": {
2026-06-22T02:37:07.4396863Z         "doc": {
2026-06-22T02:37:07.4396967Z           "complete": false,
2026-06-22T02:37:07.4397076Z           "evidence": []
2026-06-22T02:37:07.4397182Z         },
2026-06-22T02:37:07.4397282Z         "impl": {
2026-06-22T02:37:07.4397391Z           "complete": true,
2026-06-22T02:37:07.4397492Z           "evidence": [
2026-06-22T02:37:07.4397587Z             {
2026-06-22T02:37:07.4397730Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.4397831Z               "line": 35
2026-06-22T02:37:07.4397935Z             }
2026-06-22T02:37:07.4398040Z           ]
2026-06-22T02:37:07.4398146Z         },
2026-06-22T02:37:07.4398250Z         "int": {
2026-06-22T02:37:07.4398377Z           "complete": false,
2026-06-22T02:37:07.4398487Z           "evidence": []
2026-06-22T02:37:07.4398585Z         },
2026-06-22T02:37:07.4398690Z         "unit": {
2026-06-22T02:37:07.4398795Z           "complete": true,
2026-06-22T02:37:07.4398910Z           "evidence": [
2026-06-22T02:37:07.4399090Z             {
2026-06-22T02:37:07.4399234Z               "path": "crates/spt-store/src/atomic.rs",
2026-06-22T02:37:07.4399338Z               "line": 220
2026-06-22T02:37:07.4399449Z             }
2026-06-22T02:37:07.4399549Z           ]
2026-06-22T02:37:07.4399653Z         }
2026-06-22T02:37:07.4399754Z       }
2026-06-22T02:37:07.4399853Z     },
2026-06-22T02:37:07.4399953Z     {
2026-06-22T02:37:07.4400093Z       "id": "REQ-HAZARD-UNHOST-PSYCHE-REAP",
2026-06-22T02:37:07.4403238Z       "title": "On un-host, the detached `{id}-psyche` HARNESS PROCESS is reaped — not just its in-brain pulse-driver thread. Today stop_host (livehost.rs:203) trips the HostedLife stop flag + JOINS the driver thread, but the Psyche is a detached harness process (spawn_psyche → ManifestRuntime detached spawn, runtime.rs:341-356; its pid is untracked in HostedLife though stamped on the `{id}-psyche` perch, where residency-confirm already reads it). So endpoint-stop / mid-life agent-death / a B2/B5 offline-then-unhost leaves the psyche process ORPHANED, alive until the next daemon-stop (where Breap's job/group reaps the whole brain subtree). The Psyche STAYS a harness process by design (CONTEXT.md 97/203/251 — headless harness session, its own perch) — the fix does NOT move it in-brain; it SCOPED-kills the `{id}-psyche` pid on un-host (never machine-wide — shared box). Track the pid in HostedLife at host_one (cleanest) or read the `{id}-psyche` perch pid at stop_host. Composes with H3 (endpoint stop → offline → reconcile un-host → reap) and B2/B5 (the offline arms that trigger un-host). (v0.12.0)",
2026-06-22T02:37:07.4403504Z       "requiredStages": [
2026-06-22T02:37:07.4403609Z         "impl",
2026-06-22T02:37:07.4403811Z         "unit",
2026-06-22T02:37:07.4403917Z         "int"
2026-06-22T02:37:07.4404013Z       ],
2026-06-22T02:37:07.4404125Z       "stages": {
2026-06-22T02:37:07.4404227Z         "doc": {
2026-06-22T02:37:07.4404346Z           "complete": false,
2026-06-22T02:37:07.4404464Z           "evidence": []
2026-06-22T02:37:07.4404565Z         },
2026-06-22T02:37:07.4404665Z         "impl": {
2026-06-22T02:37:07.4404779Z           "complete": true,
2026-06-22T02:37:07.4404885Z           "evidence": [
2026-06-22T02:37:07.4404989Z             {
2026-06-22T02:37:07.4405142Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4405252Z               "line": 202
2026-06-22T02:37:07.4405352Z             },
2026-06-22T02:37:07.4405452Z             {
2026-06-22T02:37:07.4405595Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:37:07.4405709Z               "line": 107
2026-06-22T02:37:07.4405811Z             },
2026-06-22T02:37:07.4405919Z             {
2026-06-22T02:37:07.4406062Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:37:07.4406173Z               "line": 138
2026-06-22T02:37:07.4406281Z             },
2026-06-22T02:37:07.4406385Z             {
2026-06-22T02:37:07.4406533Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4406645Z               "line": 209
2026-06-22T02:37:07.4406745Z             },
2026-06-22T02:37:07.4406846Z             {
2026-06-22T02:37:07.4406993Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4407099Z               "line": 246
2026-06-22T02:37:07.4407203Z             },
2026-06-22T02:37:07.4407302Z             {
2026-06-22T02:37:07.4407447Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4407562Z               "line": 379
2026-06-22T02:37:07.4407670Z             }
2026-06-22T02:37:07.4407776Z           ]
2026-06-22T02:37:07.4407880Z         },
2026-06-22T02:37:07.4407975Z         "int": {
2026-06-22T02:37:07.4408096Z           "complete": true,
2026-06-22T02:37:07.4408204Z           "evidence": [
2026-06-22T02:37:07.4408309Z             {
2026-06-22T02:37:07.4408477Z               "path": "crates/spt/tests/unhost_psyche_reap_e2e.rs",
2026-06-22T02:37:07.4408581Z               "line": 17
2026-06-22T02:37:07.4408687Z             }
2026-06-22T02:37:07.4408787Z           ]
2026-06-22T02:37:07.4408895Z         },
2026-06-22T02:37:07.4409057Z         "unit": {
2026-06-22T02:37:07.4409164Z           "complete": true,
2026-06-22T02:37:07.4409273Z           "evidence": [
2026-06-22T02:37:07.4409374Z             {
2026-06-22T02:37:07.4409517Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4409627Z               "line": 982
2026-06-22T02:37:07.4409727Z             }
2026-06-22T02:37:07.4409827Z           ]
2026-06-22T02:37:07.4409936Z         }
2026-06-22T02:37:07.4410042Z       }
2026-06-22T02:37:07.4410142Z     },
2026-06-22T02:37:07.4410241Z     {
2026-06-22T02:37:07.4410362Z       "id": "REQ-HAZARD-UPDATE-ROLLBACK",
2026-06-22T02:37:07.4410663Z       "title": "Self-update rejects version rollback; metadata expiry + adapter content signing (codex #5)",
2026-06-22T02:37:07.4410772Z       "requiredStages": [
2026-06-22T02:37:07.4410885Z         "impl",
2026-06-22T02:37:07.4410987Z         "unit"
2026-06-22T02:37:07.4411076Z       ],
2026-06-22T02:37:07.4411268Z       "stages": {
2026-06-22T02:37:07.4411371Z         "doc": {
2026-06-22T02:37:07.4411491Z           "complete": false,
2026-06-22T02:37:07.4411607Z           "evidence": []
2026-06-22T02:37:07.4411696Z         },
2026-06-22T02:37:07.4411804Z         "impl": {
2026-06-22T02:37:07.4411920Z           "complete": true,
2026-06-22T02:37:07.4412025Z           "evidence": [
2026-06-22T02:37:07.4412129Z             {
2026-06-22T02:37:07.4412282Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.4412391Z               "line": 405
2026-06-22T02:37:07.4412501Z             },
2026-06-22T02:37:07.4412606Z             {
2026-06-22T02:37:07.4412854Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.4412964Z               "line": 409
2026-06-22T02:37:07.4413058Z             },
2026-06-22T02:37:07.4413164Z             {
2026-06-22T02:37:07.4413312Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.4413421Z               "line": 156
2026-06-22T02:37:07.4413527Z             }
2026-06-22T02:37:07.4413631Z           ]
2026-06-22T02:37:07.4413736Z         },
2026-06-22T02:37:07.4413838Z         "int": {
2026-06-22T02:37:07.4413960Z           "complete": false,
2026-06-22T02:37:07.4414059Z           "evidence": []
2026-06-22T02:37:07.4414155Z         },
2026-06-22T02:37:07.4414263Z         "unit": {
2026-06-22T02:37:07.4414371Z           "complete": true,
2026-06-22T02:37:07.4414486Z           "evidence": [
2026-06-22T02:37:07.4414582Z             {
2026-06-22T02:37:07.4414724Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.4414830Z               "line": 865
2026-06-22T02:37:07.4414944Z             },
2026-06-22T02:37:07.4415053Z             {
2026-06-22T02:37:07.4415192Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.4415296Z               "line": 879
2026-06-22T02:37:07.4415402Z             },
2026-06-22T02:37:07.4415507Z             {
2026-06-22T02:37:07.4415649Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.4415751Z               "line": 898
2026-06-22T02:37:07.4415859Z             },
2026-06-22T02:37:07.4415964Z             {
2026-06-22T02:37:07.4416108Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.4416216Z               "line": 915
2026-06-22T02:37:07.4416327Z             },
2026-06-22T02:37:07.4416437Z             {
2026-06-22T02:37:07.4416589Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:37:07.4416700Z               "line": 441
2026-06-22T02:37:07.4416799Z             }
2026-06-22T02:37:07.4416907Z           ]
2026-06-22T02:37:07.4417017Z         }
2026-06-22T02:37:07.4417125Z       }
2026-06-22T02:37:07.4417224Z     },
2026-06-22T02:37:07.4417325Z     {
2026-06-22T02:37:07.4417459Z       "id": "REQ-HAZARD-VIEWER-CLOSE-DETACH",
2026-06-22T02:37:07.4427154Z       "title": "A VIEW is independent from the endpoint: closing the tab/window where `spt endpoint run` was invoked must detach ONLY the `spt rc` attach pump — the daemon-hosted harness keeps running and stays re-attachable via `spt rc <id>`. ROOT (Windows, v0.12.0 real-harness defect): the daemon never breaks away from the launching terminal's Job Object. Windows Terminal / VS Code place the launched shell AND every descendant into a Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; closing the tab drops the terminal's last job handle → the OS terminates every process still in that job. A child escapes only with CREATE_BREAKAWAY_FROM_JOB — used NOWHERE in the tree. Both daemon spawn paths (daemon.rs:707 detached_no_inherit = DETACHED_PROCESS|CREATE_NEW_PROCESS_GROUP|CREATE_NO_WINDOW; deelevate.rs:519 elevated = CREATE_NEW_CONSOLE|...) drop the CONSOLE but NOT job membership, so the daemon's freshly broker-spawned ConPTY harness subtree is reaped on tab-close. The ConPTY/pseudoconsole isolation itself is CORRECT (portable-pty builds the pseudoconsole in the daemon; no console signal / handle leak) — the leaking lifetime binding is the Job Object, not the console. FIX: add CREATE_BREAKAWAY_FROM_JOB to both daemon spawn paths AND pin each broker-spawned harness into a DAEMON-OWNED Job Object (mirror reap.rs/Breap) as backstop (survives even where a terminal sets SILENT_BREAKAWAY_OK=false). Unix: the daemon's own session detachment (new session, no controlling terminal) already keeps a closing terminal's SIGHUP off its children — verify, add a guard test, no code expected. FIX UPDATE (v0.12.1 L1.5, doyle re-scope operator-approved 2026-06-18): job-neutral daemon launch is now PRIMARY, breakaway DEMOTED to a fallback rung. ROOT reframed — the daemon INHERITS the terminal's Job because spawn_detached runs FROM the terminal-child CLI (DETACHED_PROCESS detaches the console, not the job); breakaway tried to claw back out but a job CAN deny it (the L1 finding). FIX: launch the cold-started daemon via a job-NEUTRAL creator so it is WmiPrvSE/Task-Scheduler-owned, OUTSIDE any terminal job from birth (why Task-Scheduler-autostarted daemons never had this bug). Launcher ladder (first-success-wins, daemon.rs spawn_detached → BOTH cold-start AND `spt daemon start`): (1) WMI Win32_Process.Create via ABSOLUTE powershell -EncodedCommand (KH 5.12 abs path; base64-UTF16LE dodges all quoting; success requires BOTH ReturnValue==0 AND a parsed ProcessId, else fall-through — never a silent launched), forwarding SPT_* env via a `cmd /c set … & start /b` wrapper because a WMI/scheduler child does NOT inherit transient shell env (verified — SPT_HOME would be lost, wrong universe); (2) schtasks one-shot (same env wrapper; best-effort fallback); (3) CREATE_BREAKAWAY_FROM_JOB (the L1 code, reordered below); (4) in-job last resort (logs DETACH_IN_JOB + tab-close caveat). detached_no_inherit (breakaway-then-in-job) is UNCHANGED for its other caller shellhost::launch_shell (a daemon-spawned shell is already job-neutral once the daemon is). The elevated deelevate path keeps its L1 breakaway for now (elevated-case WMI-reparent = FOLLOW-UP). (v0.12.1)",
2026-06-22T02:37:07.4427606Z       "requiredStages": [
2026-06-22T02:37:07.4427756Z         "doc",
2026-06-22T02:37:07.4427861Z         "impl",
2026-06-22T02:37:07.4427976Z         "unit",
2026-06-22T02:37:07.4428094Z         "int"
2026-06-22T02:37:07.4428219Z       ],
2026-06-22T02:37:07.4428319Z       "stages": {
2026-06-22T02:37:07.4428428Z         "doc": {
2026-06-22T02:37:07.4428548Z           "complete": true,
2026-06-22T02:37:07.4428657Z           "evidence": [
2026-06-22T02:37:07.4428761Z             {
2026-06-22T02:37:07.4428882Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4429072Z               "line": 420
2026-06-22T02:37:07.4429178Z             },
2026-06-22T02:37:07.4429282Z             {
2026-06-22T02:37:07.4429410Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4429521Z               "line": 402
2026-06-22T02:37:07.4429620Z             }
2026-06-22T02:37:07.4429720Z           ]
2026-06-22T02:37:07.4429822Z         },
2026-06-22T02:37:07.4429931Z         "impl": {
2026-06-22T02:37:07.4430044Z           "complete": true,
2026-06-22T02:37:07.4430149Z           "evidence": [
2026-06-22T02:37:07.4430243Z             {
2026-06-22T02:37:07.4430399Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4430499Z               "line": 797
2026-06-22T02:37:07.4430605Z             },
2026-06-22T02:37:07.4430713Z             {
2026-06-22T02:37:07.4430857Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4430961Z               "line": 822
2026-06-22T02:37:07.4431061Z             },
2026-06-22T02:37:07.4431167Z             {
2026-06-22T02:37:07.4431304Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4431425Z               "line": 839
2026-06-22T02:37:07.4431529Z             },
2026-06-22T02:37:07.4431628Z             {
2026-06-22T02:37:07.4431773Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4431882Z               "line": 854
2026-06-22T02:37:07.4431987Z             },
2026-06-22T02:37:07.4432196Z             {
2026-06-22T02:37:07.4432340Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4432460Z               "line": 874
2026-06-22T02:37:07.4432554Z             },
2026-06-22T02:37:07.4432660Z             {
2026-06-22T02:37:07.4432793Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4432911Z               "line": 964
2026-06-22T02:37:07.4433011Z             },
2026-06-22T02:37:07.4433122Z             {
2026-06-22T02:37:07.4433254Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4433359Z               "line": 1016
2026-06-22T02:37:07.4433465Z             },
2026-06-22T02:37:07.4433665Z             {
2026-06-22T02:37:07.4433812Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4433917Z               "line": 1075
2026-06-22T02:37:07.4434028Z             },
2026-06-22T02:37:07.4434137Z             {
2026-06-22T02:37:07.4434275Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.4434394Z               "line": 527
2026-06-22T02:37:07.4434498Z             }
2026-06-22T02:37:07.4434604Z           ]
2026-06-22T02:37:07.4434704Z         },
2026-06-22T02:37:07.4434794Z         "int": {
2026-06-22T02:37:07.4434909Z           "complete": true,
2026-06-22T02:37:07.4435019Z           "evidence": [
2026-06-22T02:37:07.4435127Z             {
2026-06-22T02:37:07.4435265Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:37:07.4435373Z               "line": 35
2026-06-22T02:37:07.4435473Z             },
2026-06-22T02:37:07.4435573Z             {
2026-06-22T02:37:07.4435716Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:37:07.4435829Z               "line": 569
2026-06-22T02:37:07.4435936Z             },
2026-06-22T02:37:07.4436040Z             {
2026-06-22T02:37:07.4436188Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:37:07.4436298Z               "line": 590
2026-06-22T02:37:07.4436407Z             }
2026-06-22T02:37:07.4436517Z           ]
2026-06-22T02:37:07.4436622Z         },
2026-06-22T02:37:07.4436736Z         "unit": {
2026-06-22T02:37:07.4436851Z           "complete": true,
2026-06-22T02:37:07.4436955Z           "evidence": [
2026-06-22T02:37:07.4437060Z             {
2026-06-22T02:37:07.4437200Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4437313Z               "line": 1202
2026-06-22T02:37:07.4437418Z             },
2026-06-22T02:37:07.4437525Z             {
2026-06-22T02:37:07.4437666Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4437772Z               "line": 1246
2026-06-22T02:37:07.4437882Z             },
2026-06-22T02:37:07.4437985Z             {
2026-06-22T02:37:07.4438122Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4438227Z               "line": 1260
2026-06-22T02:37:07.4438335Z             },
2026-06-22T02:37:07.4438430Z             {
2026-06-22T02:37:07.4438579Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4438697Z               "line": 1278
2026-06-22T02:37:07.4438794Z             },
2026-06-22T02:37:07.4438898Z             {
2026-06-22T02:37:07.4439127Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4439242Z               "line": 1302
2026-06-22T02:37:07.4439355Z             },
2026-06-22T02:37:07.4439461Z             {
2026-06-22T02:37:07.4439608Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4439718Z               "line": 1529
2026-06-22T02:37:07.4439819Z             }
2026-06-22T02:37:07.4439918Z           ]
2026-06-22T02:37:07.4440024Z         }
2026-06-22T02:37:07.4440124Z       }
2026-06-22T02:37:07.4440223Z     },
2026-06-22T02:37:07.4440324Z     {
2026-06-22T02:37:07.4440453Z       "id": "REQ-HAZARD-VIEWER-ISOLATION",
2026-06-22T02:37:07.4442634Z       "title": "A slow / dead / hostile VIEWER must NEVER stall the controller, the PTY child, or the session drain thread. The broker drain fans output to the controller on the authoritative blocking bounded path (advances delivered_through) but to each viewer via a bounded per-viewer channel with a dedicated writer thread; the drain `try_send`s under the log lock and a viewer whose bounded queue OVERFLOWS (can't keep up) is EVICTED (queue dropped, writer thread ends, removed from the viewers map) — the drain thread NEVER touches a viewer socket, so no viewer write can backpressure or block it. A soft viewer cap bounds the thread count. Viewer eviction never perturbs the controller stream, the delivered_through cursor, or the child.",
2026-06-22T02:37:07.4442915Z       "requiredStages": [
2026-06-22T02:37:07.4443119Z         "unit",
2026-06-22T02:37:07.4443230Z         "int"
2026-06-22T02:37:07.4443325Z       ],
2026-06-22T02:37:07.4443428Z       "stages": {
2026-06-22T02:37:07.4443532Z         "doc": {
2026-06-22T02:37:07.4443639Z           "complete": true,
2026-06-22T02:37:07.4443752Z           "evidence": [
2026-06-22T02:37:07.4443866Z             {
2026-06-22T02:37:07.4444000Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4444114Z               "line": 381
2026-06-22T02:37:07.4444211Z             }
2026-06-22T02:37:07.4444306Z           ]
2026-06-22T02:37:07.4444410Z         },
2026-06-22T02:37:07.4444520Z         "impl": {
2026-06-22T02:37:07.4444630Z           "complete": true,
2026-06-22T02:37:07.4444748Z           "evidence": [
2026-06-22T02:37:07.4444850Z             {
2026-06-22T02:37:07.4444996Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4445111Z               "line": 100
2026-06-22T02:37:07.4445208Z             }
2026-06-22T02:37:07.4445325Z           ]
2026-06-22T02:37:07.4445416Z         },
2026-06-22T02:37:07.4445532Z         "int": {
2026-06-22T02:37:07.4445640Z           "complete": true,
2026-06-22T02:37:07.4445739Z           "evidence": [
2026-06-22T02:37:07.4445844Z             {
2026-06-22T02:37:07.4445995Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.4446109Z               "line": 1045
2026-06-22T02:37:07.4446210Z             }
2026-06-22T02:37:07.4446319Z           ]
2026-06-22T02:37:07.4446419Z         },
2026-06-22T02:37:07.4446529Z         "unit": {
2026-06-22T02:37:07.4446643Z           "complete": true,
2026-06-22T02:37:07.4446763Z           "evidence": [
2026-06-22T02:37:07.4446867Z             {
2026-06-22T02:37:07.4447005Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4447121Z               "line": 2270
2026-06-22T02:37:07.4447220Z             }
2026-06-22T02:37:07.4447325Z           ]
2026-06-22T02:37:07.4447426Z         }
2026-06-22T02:37:07.4447544Z       }
2026-06-22T02:37:07.4447654Z     },
2026-06-22T02:37:07.4447746Z     {
2026-06-22T02:37:07.4447897Z       "id": "REQ-HAZARD-VIEWER-RING-ROLL-SNAP",
2026-06-22T02:37:07.4452163Z       "title": "A read-only rc --view VIEWER whose serving brain falls behind the live ring under a hard flood and receives a FORWARD Output seq gap (the ring rolled frames out between reads, BEFORE any channel-overflow eviction → NO KIND_VIEWER_EVICTED marker) must SNAP TO LIVE (accept-and-advance via dedup-below + snap-above), NOT fatal with output gap (brain.rs:624/628 legacy reject-gap). ROOT (v0.13.0 forkpty, post-b4+skip-to-live): serve_attach subscribes a viewer via brain.attach_as(Viewer) leaving session_cursors EMPTY → the viewer serve-brain uses the LEGACY reject-gap → a PRE-eviction ring-roll forward-gap FATALS read_event → serve_attach returns → forwarding stops → attach_received_pty_output=FALSE (a_journaled / p0_paste / attach.rs:1071 wedged_viewer, Linux forkpty; Windows ConPTY floods slower → MASKED false-green). DISTINCT from REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT (the POST-eviction re-subscribe-from-floor): this is PRE-eviction gap-tolerance while STILL subscribed. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative); the CONTROLLER keeps strict reject-gap (exactly-once resume). FIX: arm snap-above at initial viewer attach (attach_as_viewer_snap = attach_as(Viewer) + session_cursors.insert(session_id, from_seq)); the two viewer-survival mechanisms COMPOSE — this tolerates pre-eviction ring-roll gaps, REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT recovers post-eviction. (v0.13.0)",
2026-06-22T02:37:07.4452444Z       "requiredStages": [
2026-06-22T02:37:07.4452550Z         "doc",
2026-06-22T02:37:07.4452659Z         "impl",
2026-06-22T02:37:07.4452763Z         "unit",
2026-06-22T02:37:07.4452865Z         "int"
2026-06-22T02:37:07.4452969Z       ],
2026-06-22T02:37:07.4453074Z       "stages": {
2026-06-22T02:37:07.4453180Z         "doc": {
2026-06-22T02:37:07.4453298Z           "complete": true,
2026-06-22T02:37:07.4453509Z           "evidence": [
2026-06-22T02:37:07.4453603Z             {
2026-06-22T02:37:07.4453722Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4453833Z               "line": 342
2026-06-22T02:37:07.4453937Z             }
2026-06-22T02:37:07.4454031Z           ]
2026-06-22T02:37:07.4454131Z         },
2026-06-22T02:37:07.4454247Z         "impl": {
2026-06-22T02:37:07.4454345Z           "complete": true,
2026-06-22T02:37:07.4454461Z           "evidence": [
2026-06-22T02:37:07.4454551Z             {
2026-06-22T02:37:07.4454703Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.4454809Z               "line": 333
2026-06-22T02:37:07.4454914Z             },
2026-06-22T02:37:07.4455022Z             {
2026-06-22T02:37:07.4455157Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4455271Z               "line": 892
2026-06-22T02:37:07.4455376Z             }
2026-06-22T02:37:07.4455486Z           ]
2026-06-22T02:37:07.4455591Z         },
2026-06-22T02:37:07.4455695Z         "int": {
2026-06-22T02:37:07.4455890Z           "complete": true,
2026-06-22T02:37:07.4456001Z           "evidence": [
2026-06-22T02:37:07.4456107Z             {
2026-06-22T02:37:07.4456286Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.4456395Z               "line": 787
2026-06-22T02:37:07.4456517Z             },
2026-06-22T02:37:07.4456612Z             {
2026-06-22T02:37:07.4456789Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.4456902Z               "line": 2053
2026-06-22T02:37:07.4457013Z             }
2026-06-22T02:37:07.4457118Z           ]
2026-06-22T02:37:07.4457227Z         },
2026-06-22T02:37:07.4457337Z         "unit": {
2026-06-22T02:37:07.4457451Z           "complete": true,
2026-06-22T02:37:07.4457556Z           "evidence": [
2026-06-22T02:37:07.4457657Z             {
2026-06-22T02:37:07.4457800Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.4457909Z               "line": 1682
2026-06-22T02:37:07.4458015Z             }
2026-06-22T02:37:07.4458124Z           ]
2026-06-22T02:37:07.4458228Z         }
2026-06-22T02:37:07.4458335Z       }
2026-06-22T02:37:07.4458438Z     },
2026-06-22T02:37:07.4458548Z     {
2026-06-22T02:37:07.4458748Z       "id": "REQ-HAZARD-VIEWER-STARVE-UNDER-CONTROLLER-BACKPRESSURE",
2026-06-22T02:37:07.4464074Z       "title": "A SLOW controller must not starve a concurrent `rc --view` VIEWER. W1 (REQ-HAZARD-INJECT-CONTROL-COEXIST) moved the controller SOCKET WRITE off the drain thread onto controller_writer, but left the bounded HANDOFF (ControllerJob::deliver) as an INLINE try_send SLEEP-POLL on the drain (broker.rs:1450-1457 → deliver:669-685, up to CONTROLLER_WRITE_DEADLINE=5s). So when a controller drains slower than the PTY floods, its CONTROLLER_CHANNEL_DEPTH(4096) channel fills, deliver() polls inline, and the DRAIN THREAD is throttled to the controller's read rate → OutputLog::append's viewer fan-out (try_send) stops running → a concurrent VIEWER receives only the initial replay then nothing (root 'b4', warm forkpty: a_journaled c1=0/EVICT=0/got_output=FALSE; steady-state-near-full = no recovery; forkpty-only, floods harder than Windows ConPTY). The viewer-not-starved-by-a-busy-session property is legitimate (rc --view of a noisy session must show LIVE output). FIX: the controller becomes a SINGLE NON-BLOCKING try_send (like a viewer), done IN append() under the log lock; deliver()'s sleep-poll DELETED; the drain NEVER sleeps. ControllerSink gains a stateful last_ok deadline → a TRULY-stalled controller (continuous-Full past CONTROLLER_WRITE_DEADLINE) is evicted (bounded-wedge preserved); a slow-but-alive controller DROPS frames + falls behind the ring (resume-from-floor, the existing reconnect case). B2 GAPLESS-HANDOFF PRESERVED via a CONTIGUOUS delivered_through: controller_writer advances the cursor ONLY when the written seq == cursor (next expected); a gap from a drop FREEZES the cursor at last-contiguous so a re-attaching brain's resume_seq never skips a dropped chunk (a high-watermark advance past the gap would be a not-exactly-once resume = B2 violation, doyle's gate). (v0.13.0)",
2026-06-22T02:37:07.4464497Z       "requiredStages": [
2026-06-22T02:37:07.4464596Z         "impl",
2026-06-22T02:37:07.4464706Z         "unit",
2026-06-22T02:37:07.4464821Z         "int"
2026-06-22T02:37:07.4464924Z       ],
2026-06-22T02:37:07.4465035Z       "stages": {
2026-06-22T02:37:07.4465140Z         "doc": {
2026-06-22T02:37:07.4465263Z           "complete": false,
2026-06-22T02:37:07.4465369Z           "evidence": []
2026-06-22T02:37:07.4465474Z         },
2026-06-22T02:37:07.4465587Z         "impl": {
2026-06-22T02:37:07.4465688Z           "complete": true,
2026-06-22T02:37:07.4465797Z           "evidence": [
2026-06-22T02:37:07.4465902Z             {
2026-06-22T02:37:07.4466056Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4466165Z               "line": 322
2026-06-22T02:37:07.4466280Z             },
2026-06-22T02:37:07.4466404Z             {
2026-06-22T02:37:07.4466551Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4466662Z               "line": 744
2026-06-22T02:37:07.4466765Z             }
2026-06-22T02:37:07.4466869Z           ]
2026-06-22T02:37:07.4466974Z         },
2026-06-22T02:37:07.4467087Z         "int": {
2026-06-22T02:37:07.4467201Z           "complete": true,
2026-06-22T02:37:07.4467306Z           "evidence": [
2026-06-22T02:37:07.4467406Z             {
2026-06-22T02:37:07.4467583Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.4467697Z               "line": 786
2026-06-22T02:37:07.4467796Z             }
2026-06-22T02:37:07.4467902Z           ]
2026-06-22T02:37:07.4468007Z         },
2026-06-22T02:37:07.4468101Z         "unit": {
2026-06-22T02:37:07.4468217Z           "complete": true,
2026-06-22T02:37:07.4468326Z           "evidence": [
2026-06-22T02:37:07.4468435Z             {
2026-06-22T02:37:07.4468589Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4468699Z               "line": 2485
2026-06-22T02:37:07.4468798Z             },
2026-06-22T02:37:07.4468899Z             {
2026-06-22T02:37:07.4469113Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.4469228Z               "line": 2554
2026-06-22T02:37:07.4469356Z             }
2026-06-22T02:37:07.4469462Z           ]
2026-06-22T02:37:07.4469572Z         }
2026-06-22T02:37:07.4469670Z       }
2026-06-22T02:37:07.4469769Z     },
2026-06-22T02:37:07.4469875Z     {
2026-06-22T02:37:07.4470001Z       "id": "REQ-HAZARD-WAN-ORIGIN-AUTH",
2026-06-22T02:37:07.4470832Z       "title": "WAN-inbound origin is transport truth, never payload: the access gate's subject (ADR-0009 origin-node whitelist) is the QUIC handshake-proven remote node id from the broker's conn/stream table — a forged origin/node field inside record bytes is inert (7.5)",
2026-06-22T02:37:07.4470959Z       "requiredStages": [
2026-06-22T02:37:07.4471074Z         "doc",
2026-06-22T02:37:07.4471175Z         "impl",
2026-06-22T02:37:07.4471274Z         "unit"
2026-06-22T02:37:07.4471379Z       ],
2026-06-22T02:37:07.4471480Z       "stages": {
2026-06-22T02:37:07.4471579Z         "doc": {
2026-06-22T02:37:07.4471699Z           "complete": true,
2026-06-22T02:37:07.4471800Z           "evidence": [
2026-06-22T02:37:07.4472009Z             {
2026-06-22T02:37:07.4472138Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4472251Z               "line": 366
2026-06-22T02:37:07.4472351Z             }
2026-06-22T02:37:07.4472465Z           ]
2026-06-22T02:37:07.4472558Z         },
2026-06-22T02:37:07.4472663Z         "impl": {
2026-06-22T02:37:07.4472769Z           "complete": true,
2026-06-22T02:37:07.4472878Z           "evidence": [
2026-06-22T02:37:07.4472983Z             {
2026-06-22T02:37:07.4473126Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:37:07.4473235Z               "line": 87
2026-06-22T02:37:07.4473446Z             },
2026-06-22T02:37:07.4473545Z             {
2026-06-22T02:37:07.4473699Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.4473803Z               "line": 203
2026-06-22T02:37:07.4473912Z             },
2026-06-22T02:37:07.4474009Z             {
2026-06-22T02:37:07.4474165Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.4474285Z               "line": 55
2026-06-22T02:37:07.4474389Z             },
2026-06-22T02:37:07.4474494Z             {
2026-06-22T02:37:07.4474639Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.4474746Z               "line": 31
2026-06-22T02:37:07.4474838Z             },
2026-06-22T02:37:07.4474944Z             {
2026-06-22T02:37:07.4475094Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.4475203Z               "line": 446
2026-06-22T02:37:07.4475304Z             },
2026-06-22T02:37:07.4475409Z             {
2026-06-22T02:37:07.4475566Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.4475676Z               "line": 95
2026-06-22T02:37:07.4479254Z             },
2026-06-22T02:37:07.4479363Z             {
2026-06-22T02:37:07.4479535Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.4479644Z               "line": 29
2026-06-22T02:37:07.4479760Z             },
2026-06-22T02:37:07.4479864Z             {
2026-06-22T02:37:07.4480017Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.4480127Z               "line": 104
2026-06-22T02:37:07.4480230Z             },
2026-06-22T02:37:07.4480329Z             {
2026-06-22T02:37:07.4480496Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4480604Z               "line": 208
2026-06-22T02:37:07.4480714Z             },
2026-06-22T02:37:07.4480820Z             {
2026-06-22T02:37:07.4480966Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:37:07.4481068Z               "line": 28
2026-06-22T02:37:07.4481177Z             },
2026-06-22T02:37:07.4481286Z             {
2026-06-22T02:37:07.4481415Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:37:07.4481524Z               "line": 74
2026-06-22T02:37:07.4481634Z             },
2026-06-22T02:37:07.4481735Z             {
2026-06-22T02:37:07.4481896Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:37:07.4482002Z               "line": 32
2026-06-22T02:37:07.4482106Z             },
2026-06-22T02:37:07.4482211Z             {
2026-06-22T02:37:07.4482355Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4482473Z               "line": 40
2026-06-22T02:37:07.4482564Z             },
2026-06-22T02:37:07.4482675Z             {
2026-06-22T02:37:07.4482811Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4482921Z               "line": 184
2026-06-22T02:37:07.4483025Z             },
2026-06-22T02:37:07.4483128Z             {
2026-06-22T02:37:07.4483266Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:37:07.4483368Z               "line": 61
2026-06-22T02:37:07.4483476Z             },
2026-06-22T02:37:07.4483576Z             {
2026-06-22T02:37:07.4483711Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:37:07.4483819Z               "line": 131
2026-06-22T02:37:07.4484081Z             },
2026-06-22T02:37:07.4484187Z             {
2026-06-22T02:37:07.4484329Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:37:07.4484444Z               "line": 223
2026-06-22T02:37:07.4484545Z             },
2026-06-22T02:37:07.4484649Z             {
2026-06-22T02:37:07.4484787Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:37:07.4484898Z               "line": 37
2026-06-22T02:37:07.4485001Z             },
2026-06-22T02:37:07.4485102Z             {
2026-06-22T02:37:07.4485255Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:37:07.4485364Z               "line": 38
2026-06-22T02:37:07.4485561Z             },
2026-06-22T02:37:07.4485659Z             {
2026-06-22T02:37:07.4485811Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:37:07.4485913Z               "line": 36
2026-06-22T02:37:07.4486007Z             },
2026-06-22T02:37:07.4486112Z             {
2026-06-22T02:37:07.4486246Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:37:07.4486374Z               "line": 40
2026-06-22T02:37:07.4486480Z             }
2026-06-22T02:37:07.4486585Z           ]
2026-06-22T02:37:07.4486684Z         },
2026-06-22T02:37:07.4486780Z         "int": {
2026-06-22T02:37:07.4486908Z           "complete": false,
2026-06-22T02:37:07.4487013Z           "evidence": []
2026-06-22T02:37:07.4487119Z         },
2026-06-22T02:37:07.4487223Z         "unit": {
2026-06-22T02:37:07.4487342Z           "complete": true,
2026-06-22T02:37:07.4487448Z           "evidence": [
2026-06-22T02:37:07.4487542Z             {
2026-06-22T02:37:07.4487700Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.4487810Z               "line": 212
2026-06-22T02:37:07.4487918Z             },
2026-06-22T02:37:07.4488018Z             {
2026-06-22T02:37:07.4488174Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T02:37:07.4488278Z               "line": 136
2026-06-22T02:37:07.4488388Z             },
2026-06-22T02:37:07.4488499Z             {
2026-06-22T02:37:07.4488650Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:37:07.4488756Z               "line": 685
2026-06-22T02:37:07.4488860Z             },
2026-06-22T02:37:07.4489051Z             {
2026-06-22T02:37:07.4489203Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:37:07.4489303Z               "line": 224
2026-06-22T02:37:07.4489418Z             },
2026-06-22T02:37:07.4489528Z             {
2026-06-22T02:37:07.4489667Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:37:07.4489776Z               "line": 206
2026-06-22T02:37:07.4489885Z             },
2026-06-22T02:37:07.4489991Z             {
2026-06-22T02:37:07.4490128Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:37:07.4490243Z               "line": 112
2026-06-22T02:37:07.4490339Z             },
2026-06-22T02:37:07.4490452Z             {
2026-06-22T02:37:07.4490582Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:37:07.4490692Z               "line": 157
2026-06-22T02:37:07.4490799Z             },
2026-06-22T02:37:07.4490899Z             {
2026-06-22T02:37:07.4491042Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:37:07.4491149Z               "line": 215
2026-06-22T02:37:07.4491255Z             },
2026-06-22T02:37:07.4491355Z             {
2026-06-22T02:37:07.4491493Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:37:07.4491599Z               "line": 141
2026-06-22T02:37:07.4491704Z             },
2026-06-22T02:37:07.4491798Z             {
2026-06-22T02:37:07.4491933Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:37:07.4492047Z               "line": 162
2026-06-22T02:37:07.4492156Z             }
2026-06-22T02:37:07.4492257Z           ]
2026-06-22T02:37:07.4492366Z         }
2026-06-22T02:37:07.4492466Z       }
2026-06-22T02:37:07.4492567Z     },
2026-06-22T02:37:07.4492666Z     {
2026-06-22T02:37:07.4492915Z       "id": "REQ-HAZARD-WIN-PTY-PROGRAM-RESOLVE",
2026-06-22T02:37:07.4494834Z       "title": "Native-PTY spawn must resolve a bare program name with PATHEXT precedence and run a non-PE target through its interpreter: portable-pty's own `which` takes the FIRST PATH match — an extensionless shebang shim (e.g. a node CLI `ccs` shipped beside `ccs.cmd`) — and CreateProcessW then rejects the non-PE file with os error 193 ('not a valid Win32 application'); spt-term resolves the program itself (PATHEXT order prefers .EXE over .CMD; .cmd/.bat → cmd.exe /d /c, .ps1 → powershell -NoProfile -File) so a bare harness/shell [session.self] command actually launches on Windows. Unix is a passthrough (execve honours the shebang).",
2026-06-22T02:37:07.4495081Z       "requiredStages": [
2026-06-22T02:37:07.4495186Z         "doc",
2026-06-22T02:37:07.4495295Z         "impl",
2026-06-22T02:37:07.4495386Z         "unit",
2026-06-22T02:37:07.4495491Z         "int"
2026-06-22T02:37:07.4495586Z       ],
2026-06-22T02:37:07.4495691Z       "stages": {
2026-06-22T02:37:07.4495792Z         "doc": {
2026-06-22T02:37:07.4495905Z           "complete": true,
2026-06-22T02:37:07.4496006Z           "evidence": [
2026-06-22T02:37:07.4496107Z             {
2026-06-22T02:37:07.4496238Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.4496348Z               "line": 250
2026-06-22T02:37:07.4496453Z             }
2026-06-22T02:37:07.4496553Z           ]
2026-06-22T02:37:07.4496648Z         },
2026-06-22T02:37:07.4496749Z         "impl": {
2026-06-22T02:37:07.4496858Z           "complete": true,
2026-06-22T02:37:07.4496972Z           "evidence": [
2026-06-22T02:37:07.4497073Z             {
2026-06-22T02:37:07.4497225Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:37:07.4497335Z               "line": 135
2026-06-22T02:37:07.4497445Z             },
2026-06-22T02:37:07.4497539Z             {
2026-06-22T02:37:07.4497665Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:37:07.4497769Z               "line": 157
2026-06-22T02:37:07.4497864Z             }
2026-06-22T02:37:07.4497975Z           ]
2026-06-22T02:37:07.4498074Z         },
2026-06-22T02:37:07.4498179Z         "int": {
2026-06-22T02:37:07.4498289Z           "complete": true,
2026-06-22T02:37:07.4498403Z           "evidence": [
2026-06-22T02:37:07.4498511Z             {
2026-06-22T02:37:07.4498660Z               "path": "crates/spt-term/tests/winspawn.rs",
2026-06-22T02:37:07.4498767Z               "line": 15
2026-06-22T02:37:07.4498871Z             }
2026-06-22T02:37:07.4499068Z           ]
2026-06-22T02:37:07.4499171Z         },
2026-06-22T02:37:07.4499273Z         "unit": {
2026-06-22T02:37:07.4499392Z           "complete": true,
2026-06-22T02:37:07.4499505Z           "evidence": [
2026-06-22T02:37:07.4499611Z             {
2026-06-22T02:37:07.4499744Z               "path": "crates/spt-term/src/winprog.rs",
2026-06-22T02:37:07.4499859Z               "line": 233
2026-06-22T02:37:07.4499964Z             }
2026-06-22T02:37:07.4500068Z           ]
2026-06-22T02:37:07.4500164Z         }
2026-06-22T02:37:07.4500269Z       }
2026-06-22T02:37:07.4500364Z     },
2026-06-22T02:37:07.4500464Z     {
2026-06-22T02:37:07.4500613Z       "id": "REQ-HAZARD-WINDOWS-PID-RECYCLE",
2026-06-22T02:37:07.4500798Z       "title": "Windows PID-recycling false positives guarded (5.1)",
2026-06-22T02:37:07.4500904Z       "requiredStages": [
2026-06-22T02:37:07.4501012Z         "impl",
2026-06-22T02:37:07.4501118Z         "unit"
2026-06-22T02:37:07.4501219Z       ],
2026-06-22T02:37:07.4501322Z       "stages": {
2026-06-22T02:37:07.4501426Z         "doc": {
2026-06-22T02:37:07.4501546Z           "complete": false,
2026-06-22T02:37:07.4501658Z           "evidence": []
2026-06-22T02:37:07.4501757Z         },
2026-06-22T02:37:07.4501858Z         "impl": {
2026-06-22T02:37:07.4501977Z           "complete": true,
2026-06-22T02:37:07.4502077Z           "evidence": [
2026-06-22T02:37:07.4502173Z             {
2026-06-22T02:37:07.4502320Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4502526Z               "line": 95
2026-06-22T02:37:07.4502635Z             },
2026-06-22T02:37:07.4502726Z             {
2026-06-22T02:37:07.4502874Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.4502979Z               "line": 117
2026-06-22T02:37:07.4503089Z             }
2026-06-22T02:37:07.4503194Z           ]
2026-06-22T02:37:07.4503293Z         },
2026-06-22T02:37:07.4503399Z         "int": {
2026-06-22T02:37:07.4503513Z           "complete": false,
2026-06-22T02:37:07.4503623Z           "evidence": []
2026-06-22T02:37:07.4503719Z         },
2026-06-22T02:37:07.4503824Z         "unit": {
2026-06-22T02:37:07.4504050Z           "complete": true,
2026-06-22T02:37:07.4504164Z           "evidence": [
2026-06-22T02:37:07.4504258Z             {
2026-06-22T02:37:07.4504391Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4504498Z               "line": 250
2026-06-22T02:37:07.4504601Z             },
2026-06-22T02:37:07.4504716Z             {
2026-06-22T02:37:07.4504850Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4504949Z               "line": 412
2026-06-22T02:37:07.4505050Z             },
2026-06-22T02:37:07.4505150Z             {
2026-06-22T02:37:07.4505283Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.4505394Z               "line": 611
2026-06-22T02:37:07.4505498Z             },
2026-06-22T02:37:07.4505603Z             {
2026-06-22T02:37:07.4505732Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.4505846Z               "line": 669
2026-06-22T02:37:07.4505946Z             }
2026-06-22T02:37:07.4506061Z           ]
2026-06-22T02:37:07.4506156Z         }
2026-06-22T02:37:07.4506251Z       }
2026-06-22T02:37:07.4506353Z     },
2026-06-22T02:37:07.4506455Z     {
2026-06-22T02:37:07.4506591Z       "id": "REQ-HAZARD-WMI-DAEMON-WINDOW",
2026-06-22T02:37:07.4509110Z       "title": "`spt daemon start` launches the daemon with NO visible console window. REGRESSION (v0.12.1 L1.5): the WMI job-neutral launch (spawn_daemon_via_wmi) set CREATE_NO_WINDOW on the launching powershell but NOT on the Win32_Process.Create call — Win32_Process.Create does not inherit it, so the spawned cmd.exe env-forwarding wrapper popped a console window on every cold-start (violating REQ-INSTALL-10's v0.7.4 no-persistent-window invariant; the old detached_no_inherit path set DETACHED_PROCESS|CREATE_NO_WINDOW). FIX: pass a Win32_ProcessStartup with CreateFlags=DETACHED_PROCESS (0x8 — no console so no window; CREATE_NO_WINDOW 0x08000000 is NOT a valid Win32_ProcessStartup flag → ReturnValue 21 invalid-param, which is why the naive port fails) + ShowWindow=SW_HIDE(0) belt, via the ProcessStartupInformation argument. (v0.12.2)",
2026-06-22T02:37:07.4509262Z       "requiredStages": [
2026-06-22T02:37:07.4509365Z         "impl",
2026-06-22T02:37:07.4509470Z         "unit",
2026-06-22T02:37:07.4509576Z         "int"
2026-06-22T02:37:07.4509680Z       ],
2026-06-22T02:37:07.4509785Z       "stages": {
2026-06-22T02:37:07.4509885Z         "doc": {
2026-06-22T02:37:07.4509994Z           "complete": false,
2026-06-22T02:37:07.4510099Z           "evidence": []
2026-06-22T02:37:07.4510200Z         },
2026-06-22T02:37:07.4510309Z         "impl": {
2026-06-22T02:37:07.4510424Z           "complete": true,
2026-06-22T02:37:07.4510524Z           "evidence": [
2026-06-22T02:37:07.4510638Z             {
2026-06-22T02:37:07.4510782Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4510886Z               "line": 925
2026-06-22T02:37:07.4510991Z             },
2026-06-22T02:37:07.4511092Z             {
2026-06-22T02:37:07.4511229Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4511344Z               "line": 994
2026-06-22T02:37:07.4511446Z             }
2026-06-22T02:37:07.4511548Z           ]
2026-06-22T02:37:07.4511654Z         },
2026-06-22T02:37:07.4511760Z         "int": {
2026-06-22T02:37:07.4511868Z           "complete": true,
2026-06-22T02:37:07.4512087Z           "evidence": [
2026-06-22T02:37:07.4512194Z             {
2026-06-22T02:37:07.4512346Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:37:07.4512448Z               "line": 187
2026-06-22T02:37:07.4512566Z             },
2026-06-22T02:37:07.4512661Z             {
2026-06-22T02:37:07.4512805Z               "path": "crates/spt/tests/job_escape_e2e.rs",
2026-06-22T02:37:07.4512919Z               "line": 348
2026-06-22T02:37:07.4513015Z             }
2026-06-22T02:37:07.4513115Z           ]
2026-06-22T02:37:07.4513219Z         },
2026-06-22T02:37:07.4513324Z         "unit": {
2026-06-22T02:37:07.4513434Z           "complete": true,
2026-06-22T02:37:07.4513654Z           "evidence": [
2026-06-22T02:37:07.4513763Z             {
2026-06-22T02:37:07.4513901Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4514007Z               "line": 1206
2026-06-22T02:37:07.4514106Z             },
2026-06-22T02:37:07.4514202Z             {
2026-06-22T02:37:07.4514331Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4514444Z               "line": 8116
2026-06-22T02:37:07.4514548Z             }
2026-06-22T02:37:07.4514648Z           ]
2026-06-22T02:37:07.4514757Z         }
2026-06-22T02:37:07.4514856Z       }
2026-06-22T02:37:07.4514956Z     },
2026-06-22T02:37:07.4515053Z     {
2026-06-22T02:37:07.4515180Z       "id": "REQ-HAZARD-WORKER-PATH",
2026-06-22T02:37:07.4515391Z       "title": "Single source of truth for Worker/Psyche perch location (1.5)",
2026-06-22T02:37:07.4515499Z       "requiredStages": [
2026-06-22T02:37:07.4515605Z         "impl",
2026-06-22T02:37:07.4515695Z         "unit"
2026-06-22T02:37:07.4515799Z       ],
2026-06-22T02:37:07.4515897Z       "stages": {
2026-06-22T02:37:07.4515996Z         "doc": {
2026-06-22T02:37:07.4516119Z           "complete": false,
2026-06-22T02:37:07.4516230Z           "evidence": []
2026-06-22T02:37:07.4516334Z         },
2026-06-22T02:37:07.4516425Z         "impl": {
2026-06-22T02:37:07.4516554Z           "complete": true,
2026-06-22T02:37:07.4516659Z           "evidence": [
2026-06-22T02:37:07.4516768Z             {
2026-06-22T02:37:07.4516913Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4517020Z               "line": 262
2026-06-22T02:37:07.4517122Z             },
2026-06-22T02:37:07.4517222Z             {
2026-06-22T02:37:07.4517363Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4517473Z               "line": 307
2026-06-22T02:37:07.4517578Z             },
2026-06-22T02:37:07.4517687Z             {
2026-06-22T02:37:07.4517821Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4517931Z               "line": 319
2026-06-22T02:37:07.4518035Z             }
2026-06-22T02:37:07.4518141Z           ]
2026-06-22T02:37:07.4518241Z         },
2026-06-22T02:37:07.4518345Z         "int": {
2026-06-22T02:37:07.4518456Z           "complete": false,
2026-06-22T02:37:07.4518560Z           "evidence": []
2026-06-22T02:37:07.4518674Z         },
2026-06-22T02:37:07.4518775Z         "unit": {
2026-06-22T02:37:07.4518889Z           "complete": true,
2026-06-22T02:37:07.4519076Z           "evidence": [
2026-06-22T02:37:07.4519185Z             {
2026-06-22T02:37:07.4519327Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4519424Z               "line": 455
2026-06-22T02:37:07.4519523Z             },
2026-06-22T02:37:07.4519627Z             {
2026-06-22T02:37:07.4519765Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4519864Z               "line": 499
2026-06-22T02:37:07.4519973Z             }
2026-06-22T02:37:07.4520078Z           ]
2026-06-22T02:37:07.4520183Z         }
2026-06-22T02:37:07.4520287Z       }
2026-06-22T02:37:07.4520388Z     },
2026-06-22T02:37:07.4520493Z     {
2026-06-22T02:37:07.4520607Z       "id": "REQ-HOST-RUN-1",
2026-06-22T02:37:07.4523027Z       "title": "spt-hosted harness bringup: `spt endpoint run` spawns an adapter's `[session.self]` command template into a broker-held PTY (the spawn-session seam, brain.rs spawn_session_pid — same broker path shellhost.rs launch_shell_brokered_in uses for shells, now for kind=\"harness\" self-role), registers the perch under the given endpoint id, returns the id. Reverses today's harness-hosted-only launch (external launcher → `api bind`). Non-interactive flag set (--adapter <a[:profile]> --id <id> --create --resume <session> --attach|--start|--view) covers every terminal action of the W2 interactive picker so shortcuts (cc-<id>) bake fully non-interactive launches; composite adapter:profile resolves via registry::resolve_option leaf-replace overlay.",
2026-06-22T02:37:07.4523389Z       "requiredStages": [
2026-06-22T02:37:07.4523599Z         "impl",
2026-06-22T02:37:07.4523689Z         "unit",
2026-06-22T02:37:07.4523793Z         "int"
2026-06-22T02:37:07.4523894Z       ],
2026-06-22T02:37:07.4523999Z       "stages": {
2026-06-22T02:37:07.4524113Z         "doc": {
2026-06-22T02:37:07.4524219Z           "complete": false,
2026-06-22T02:37:07.4524342Z           "evidence": []
2026-06-22T02:37:07.4524437Z         },
2026-06-22T02:37:07.4524544Z         "impl": {
2026-06-22T02:37:07.4524652Z           "complete": true,
2026-06-22T02:37:07.4524757Z           "evidence": [
2026-06-22T02:37:07.4524863Z             {
2026-06-22T02:37:07.4525009Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.4525118Z               "line": 30
2026-06-22T02:37:07.4525218Z             },
2026-06-22T02:37:07.4525326Z             {
2026-06-22T02:37:07.4525478Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.4525584Z               "line": 76
2026-06-22T02:37:07.4525702Z             },
2026-06-22T02:37:07.4525802Z             {
2026-06-22T02:37:07.4525956Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.4526059Z               "line": 181
2026-06-22T02:37:07.4526161Z             },
2026-06-22T02:37:07.4526256Z             {
2026-06-22T02:37:07.4526383Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4526504Z               "line": 1266
2026-06-22T02:37:07.4526598Z             }
2026-06-22T02:37:07.4526703Z           ]
2026-06-22T02:37:07.4526805Z         },
2026-06-22T02:37:07.4526913Z         "int": {
2026-06-22T02:37:07.4527028Z           "complete": true,
2026-06-22T02:37:07.4527138Z           "evidence": [
2026-06-22T02:37:07.4527242Z             {
2026-06-22T02:37:07.4527381Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.4527491Z               "line": 288
2026-06-22T02:37:07.4527595Z             }
2026-06-22T02:37:07.4527701Z           ]
2026-06-22T02:37:07.4527802Z         },
2026-06-22T02:37:07.4527914Z         "unit": {
2026-06-22T02:37:07.4528023Z           "complete": true,
2026-06-22T02:37:07.4528134Z           "evidence": [
2026-06-22T02:37:07.4528243Z             {
2026-06-22T02:37:07.4528391Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.4528506Z               "line": 229
2026-06-22T02:37:07.4528614Z             },
2026-06-22T02:37:07.4528716Z             {
2026-06-22T02:37:07.4528868Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.4529040Z               "line": 296
2026-06-22T02:37:07.4529153Z             },
2026-06-22T02:37:07.4529253Z             {
2026-06-22T02:37:07.4529412Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.4529526Z               "line": 419
2026-06-22T02:37:07.4529631Z             }
2026-06-22T02:37:07.4529736Z           ]
2026-06-22T02:37:07.4529835Z         }
2026-06-22T02:37:07.4529931Z       }
2026-06-22T02:37:07.4530028Z     },
2026-06-22T02:37:07.4530140Z     {
2026-06-22T02:37:07.4530258Z       "id": "REQ-HOST-RUN-2",
2026-06-22T02:37:07.4532011Z       "title": "Project-scoped working directory for spt-hosted bringup: `spt endpoint run` lands the broker-spawned harness PTY in the user's PROJECT cwd, not the daemon's, via an additive `SpawnReq.cwd` field carried through the broker PTY spawn (portable-pty CommandBuilder cwd). N-1-safe wire change (additive, defaulted). Required because the consumer (Claude Code) is project-scoped: broker-inherited cwd = the daemon's cwd = the wrong `.claude`, wrong session history, wrong digest source; `cc <id>` at a project root MUST land the harness in that project. W1 ships broker-inherited cwd as a bringup-proof shortcut only; this REQ must land before the M12 gate (doyle, 2026-06-14).",
2026-06-22T02:37:07.4532241Z       "requiredStages": [
2026-06-22T02:37:07.4532345Z         "impl",
2026-06-22T02:37:07.4532454Z         "unit",
2026-06-22T02:37:07.4532561Z         "int"
2026-06-22T02:37:07.4532769Z       ],
2026-06-22T02:37:07.4532880Z       "stages": {
2026-06-22T02:37:07.4532983Z         "doc": {
2026-06-22T02:37:07.4533101Z           "complete": false,
2026-06-22T02:37:07.4533207Z           "evidence": []
2026-06-22T02:37:07.4533315Z         },
2026-06-22T02:37:07.4533419Z         "impl": {
2026-06-22T02:37:07.4533524Z           "complete": true,
2026-06-22T02:37:07.4533639Z           "evidence": [
2026-06-22T02:37:07.4533743Z             {
2026-06-22T02:37:07.4533901Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.4534000Z               "line": 182
2026-06-22T02:37:07.4534106Z             },
2026-06-22T02:37:07.4534206Z             {
2026-06-22T02:37:07.4534329Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:37:07.4534449Z               "line": 113
2026-06-22T02:37:07.4534554Z             }
2026-06-22T02:37:07.4534649Z           ]
2026-06-22T02:37:07.4534750Z         },
2026-06-22T02:37:07.4534860Z         "int": {
2026-06-22T02:37:07.4534978Z           "complete": true,
2026-06-22T02:37:07.4535094Z           "evidence": [
2026-06-22T02:37:07.4535203Z             {
2026-06-22T02:37:07.4535346Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.4535457Z               "line": 575
2026-06-22T02:37:07.4535560Z             }
2026-06-22T02:37:07.4535668Z           ]
2026-06-22T02:37:07.4535779Z         },
2026-06-22T02:37:07.4535886Z         "unit": {
2026-06-22T02:37:07.4536004Z           "complete": true,
2026-06-22T02:37:07.4536115Z           "evidence": [
2026-06-22T02:37:07.4536220Z             {
2026-06-22T02:37:07.4536362Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:37:07.4536473Z               "line": 86
2026-06-22T02:37:07.4536572Z             }
2026-06-22T02:37:07.4536663Z           ]
2026-06-22T02:37:07.4536768Z         }
2026-06-22T02:37:07.4536868Z       }
2026-06-22T02:37:07.4536963Z     },
2026-06-22T02:37:07.4537064Z     {
2026-06-22T02:37:07.4537188Z       "id": "REQ-INFRA-1",
2026-06-22T02:37:07.4537403Z       "title": "GitHub issue tracking for v1; tangled.org as migration target",
2026-06-22T02:37:07.4537512Z       "requiredStages": [],
2026-06-22T02:37:07.4537622Z       "stages": {
2026-06-22T02:37:07.4537727Z         "doc": {
2026-06-22T02:37:07.4537851Z           "complete": false,
2026-06-22T02:37:07.4537951Z           "evidence": []
2026-06-22T02:37:07.4538061Z         },
2026-06-22T02:37:07.4538165Z         "impl": {
2026-06-22T02:37:07.4538276Z           "complete": false,
2026-06-22T02:37:07.4538380Z           "evidence": []
2026-06-22T02:37:07.4538479Z         },
2026-06-22T02:37:07.4538583Z         "int": {
2026-06-22T02:37:07.4538685Z           "complete": false,
2026-06-22T02:37:07.4538794Z           "evidence": []
2026-06-22T02:37:07.4538903Z         },
2026-06-22T02:37:07.4539085Z         "unit": {
2026-06-22T02:37:07.4539203Z           "complete": false,
2026-06-22T02:37:07.4539309Z           "evidence": []
2026-06-22T02:37:07.4539414Z         }
2026-06-22T02:37:07.4539513Z       }
2026-06-22T02:37:07.4539609Z     },
2026-06-22T02:37:07.4539718Z     {
2026-06-22T02:37:07.4539823Z       "id": "REQ-INST-1",
2026-06-22T02:37:07.4540010Z       "title": "endpoint ID vs instance split (adapter-agnostic ID)",
2026-06-22T02:37:07.4540119Z       "requiredStages": [],
2026-06-22T02:37:07.4540221Z       "stages": {
2026-06-22T02:37:07.4540434Z         "doc": {
2026-06-22T02:37:07.4540554Z           "complete": false,
2026-06-22T02:37:07.4540662Z           "evidence": []
2026-06-22T02:37:07.4540767Z         },
2026-06-22T02:37:07.4540876Z         "impl": {
2026-06-22T02:37:07.4540975Z           "complete": false,
2026-06-22T02:37:07.4541088Z           "evidence": []
2026-06-22T02:37:07.4541193Z         },
2026-06-22T02:37:07.4541304Z         "int": {
2026-06-22T02:37:07.4541407Z           "complete": false,
2026-06-22T02:37:07.4541517Z           "evidence": []
2026-06-22T02:37:07.4541623Z         },
2026-06-22T02:37:07.4541727Z         "unit": {
2026-06-22T02:37:07.4541833Z           "complete": false,
2026-06-22T02:37:07.4542046Z           "evidence": []
2026-06-22T02:37:07.4542148Z         }
2026-06-22T02:37:07.4542247Z       }
2026-06-22T02:37:07.4542342Z     },
2026-06-22T02:37:07.4542443Z     {
2026-06-22T02:37:07.4542557Z       "id": "REQ-INST-10",
2026-06-22T02:37:07.4542796Z       "title": "Qualified addressing [subnet:]id[@node] + ambiguity forces qualification",
2026-06-22T02:37:07.4542919Z       "requiredStages": [
2026-06-22T02:37:07.4543029Z         "impl",
2026-06-22T02:37:07.4543135Z         "unit"
2026-06-22T02:37:07.4543229Z       ],
2026-06-22T02:37:07.4543339Z       "stages": {
2026-06-22T02:37:07.4543440Z         "doc": {
2026-06-22T02:37:07.4543562Z           "complete": false,
2026-06-22T02:37:07.4543667Z           "evidence": []
2026-06-22T02:37:07.4543772Z         },
2026-06-22T02:37:07.4543875Z         "impl": {
2026-06-22T02:37:07.4543979Z           "complete": true,
2026-06-22T02:37:07.4544094Z           "evidence": [
2026-06-22T02:37:07.4544195Z             {
2026-06-22T02:37:07.4544346Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4544457Z               "line": 648
2026-06-22T02:37:07.4544565Z             },
2026-06-22T02:37:07.4544676Z             {
2026-06-22T02:37:07.4544819Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4544937Z               "line": 725
2026-06-22T02:37:07.4545039Z             },
2026-06-22T02:37:07.4545143Z             {
2026-06-22T02:37:07.4545281Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:37:07.4545401Z               "line": 13
2026-06-22T02:37:07.4545500Z             },
2026-06-22T02:37:07.4545600Z             {
2026-06-22T02:37:07.4545744Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:37:07.4545848Z               "line": 67
2026-06-22T02:37:07.4545950Z             },
2026-06-22T02:37:07.4546054Z             {
2026-06-22T02:37:07.4546182Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.4546295Z               "line": 18
2026-06-22T02:37:07.4546399Z             },
2026-06-22T02:37:07.4546508Z             {
2026-06-22T02:37:07.4546627Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.4546742Z               "line": 444
2026-06-22T02:37:07.4546846Z             }
2026-06-22T02:37:07.4546947Z           ]
2026-06-22T02:37:07.4547062Z         },
2026-06-22T02:37:07.4547161Z         "int": {
2026-06-22T02:37:07.4547277Z           "complete": false,
2026-06-22T02:37:07.4547386Z           "evidence": []
2026-06-22T02:37:07.4547480Z         },
2026-06-22T02:37:07.4547582Z         "unit": {
2026-06-22T02:37:07.4547690Z           "complete": true,
2026-06-22T02:37:07.4547800Z           "evidence": [
2026-06-22T02:37:07.4547906Z             {
2026-06-22T02:37:07.4548058Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4548162Z               "line": 932
2026-06-22T02:37:07.4548273Z             },
2026-06-22T02:37:07.4548377Z             {
2026-06-22T02:37:07.4548521Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4548644Z               "line": 1309
2026-06-22T02:37:07.4548735Z             },
2026-06-22T02:37:07.4548836Z             {
2026-06-22T02:37:07.4549044Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4549162Z               "line": 1320
2026-06-22T02:37:07.4549368Z             },
2026-06-22T02:37:07.4549468Z             {
2026-06-22T02:37:07.4549616Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4549730Z               "line": 1336
2026-06-22T02:37:07.4549827Z             },
2026-06-22T02:37:07.4549931Z             {
2026-06-22T02:37:07.4550083Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4550193Z               "line": 1352
2026-06-22T02:37:07.4550298Z             },
2026-06-22T02:37:07.4550407Z             {
2026-06-22T02:37:07.4550551Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4550660Z               "line": 1374
2026-06-22T02:37:07.4550861Z             },
2026-06-22T02:37:07.4550970Z             {
2026-06-22T02:37:07.4551105Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4551218Z               "line": 1679
2026-06-22T02:37:07.4551312Z             },
2026-06-22T02:37:07.4551412Z             {
2026-06-22T02:37:07.4551563Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:37:07.4551667Z               "line": 130
2026-06-22T02:37:07.4551777Z             },
2026-06-22T02:37:07.4551887Z             {
2026-06-22T02:37:07.4552015Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:37:07.4552126Z               "line": 167
2026-06-22T02:37:07.4552226Z             },
2026-06-22T02:37:07.4552340Z             {
2026-06-22T02:37:07.4552469Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:37:07.4552578Z               "line": 175
2026-06-22T02:37:07.4552684Z             },
2026-06-22T02:37:07.4552784Z             {
2026-06-22T02:37:07.4552921Z               "path": "crates/spt-proto/src/addr.rs",
2026-06-22T02:37:07.4553027Z               "line": 183
2026-06-22T02:37:07.4553132Z             },
2026-06-22T02:37:07.4553231Z             {
2026-06-22T02:37:07.4553376Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.4553488Z               "line": 896
2026-06-22T02:37:07.4553589Z             }
2026-06-22T02:37:07.4553691Z           ]
2026-06-22T02:37:07.4553785Z         }
2026-06-22T02:37:07.4553889Z       }
2026-06-22T02:37:07.4553986Z     },
2026-06-22T02:37:07.4554090Z     {
2026-06-22T02:37:07.4554203Z       "id": "REQ-INST-11",
2026-06-22T02:37:07.4554445Z       "title": "spt rename <id> rippled to all instances (collision-checked, 6.5-reconciled)",
2026-06-22T02:37:07.4554563Z       "requiredStages": [
2026-06-22T02:37:07.4554664Z         "impl",
2026-06-22T02:37:07.4554769Z         "unit"
2026-06-22T02:37:07.4554868Z       ],
2026-06-22T02:37:07.4554970Z       "stages": {
2026-06-22T02:37:07.4555079Z         "doc": {
2026-06-22T02:37:07.4555192Z           "complete": false,
2026-06-22T02:37:07.4555303Z           "evidence": []
2026-06-22T02:37:07.4555408Z         },
2026-06-22T02:37:07.4555512Z         "impl": {
2026-06-22T02:37:07.4555628Z           "complete": true,
2026-06-22T02:37:07.4555732Z           "evidence": [
2026-06-22T02:37:07.4555841Z             {
2026-06-22T02:37:07.4555989Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4556103Z               "line": 514
2026-06-22T02:37:07.4556205Z             },
2026-06-22T02:37:07.4556314Z             {
2026-06-22T02:37:07.4556466Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4556572Z               "line": 297
2026-06-22T02:37:07.4556675Z             },
2026-06-22T02:37:07.4556779Z             {
2026-06-22T02:37:07.4556918Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:37:07.4557025Z               "line": 59
2026-06-22T02:37:07.4557129Z             },
2026-06-22T02:37:07.4557235Z             {
2026-06-22T02:37:07.4557368Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4557478Z               "line": 5291
2026-06-22T02:37:07.4557579Z             },
2026-06-22T02:37:07.4557683Z             {
2026-06-22T02:37:07.4557812Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4558002Z               "line": 7137
2026-06-22T02:37:07.4558113Z             }
2026-06-22T02:37:07.4558213Z           ]
2026-06-22T02:37:07.4558317Z         },
2026-06-22T02:37:07.4558417Z         "int": {
2026-06-22T02:37:07.4558518Z           "complete": false,
2026-06-22T02:37:07.4558627Z           "evidence": []
2026-06-22T02:37:07.4558727Z         },
2026-06-22T02:37:07.4558833Z         "unit": {
2026-06-22T02:37:07.4559014Z           "complete": true,
2026-06-22T02:37:07.4559130Z           "evidence": [
2026-06-22T02:37:07.4559247Z             {
2026-06-22T02:37:07.4559405Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4559505Z               "line": 1479
2026-06-22T02:37:07.4559699Z             },
2026-06-22T02:37:07.4559800Z             {
2026-06-22T02:37:07.4559947Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4560057Z               "line": 1512
2026-06-22T02:37:07.4560157Z             },
2026-06-22T02:37:07.4560266Z             {
2026-06-22T02:37:07.4560424Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4560529Z               "line": 527
2026-06-22T02:37:07.4560638Z             },
2026-06-22T02:37:07.4560744Z             {
2026-06-22T02:37:07.4560891Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:37:07.4560992Z               "line": 160
2026-06-22T02:37:07.4561087Z             },
2026-06-22T02:37:07.4561192Z             {
2026-06-22T02:37:07.4561341Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:37:07.4561445Z               "line": 190
2026-06-22T02:37:07.4561549Z             },
2026-06-22T02:37:07.4561655Z             {
2026-06-22T02:37:07.4561797Z               "path": "crates/spt-store/src/rename.rs",
2026-06-22T02:37:07.4561911Z               "line": 225
2026-06-22T02:37:07.4562015Z             },
2026-06-22T02:37:07.4562114Z             {
2026-06-22T02:37:07.4562237Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4562347Z               "line": 7994
2026-06-22T02:37:07.4562462Z             }
2026-06-22T02:37:07.4562566Z           ]
2026-06-22T02:37:07.4566135Z         }
2026-06-22T02:37:07.4566267Z       }
2026-06-22T02:37:07.4566377Z     },
2026-06-22T02:37:07.4566479Z     {
2026-06-22T02:37:07.4566596Z       "id": "REQ-INST-12",
2026-06-22T02:37:07.4566930Z       "title": "Endpoint visibility per-(endpoint,subnet): excluded semantics, OR-of-defaults + override, gates sync",
2026-06-22T02:37:07.4567050Z       "requiredStages": [
2026-06-22T02:37:07.4567165Z         "impl",
2026-06-22T02:37:07.4567268Z         "unit"
2026-06-22T02:37:07.4567367Z       ],
2026-06-22T02:37:07.4567478Z       "stages": {
2026-06-22T02:37:07.4567590Z         "doc": {
2026-06-22T02:37:07.4567709Z           "complete": false,
2026-06-22T02:37:07.4567815Z           "evidence": []
2026-06-22T02:37:07.4567905Z         },
2026-06-22T02:37:07.4568029Z         "impl": {
2026-06-22T02:37:07.4568153Z           "complete": true,
2026-06-22T02:37:07.4568271Z           "evidence": [
2026-06-22T02:37:07.4568387Z             {
2026-06-22T02:37:07.4568548Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4568658Z               "line": 566
2026-06-22T02:37:07.4568764Z             },
2026-06-22T02:37:07.4568863Z             {
2026-06-22T02:37:07.4569093Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4569206Z               "line": 659
2026-06-22T02:37:07.4569312Z             },
2026-06-22T02:37:07.4569435Z             {
2026-06-22T02:37:07.4569569Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4569675Z               "line": 739
2026-06-22T02:37:07.4569783Z             },
2026-06-22T02:37:07.4569888Z             {
2026-06-22T02:37:07.4570028Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4570140Z               "line": 96
2026-06-22T02:37:07.4570244Z             },
2026-06-22T02:37:07.4570360Z             {
2026-06-22T02:37:07.4570507Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4570779Z               "line": 269
2026-06-22T02:37:07.4570883Z             },
2026-06-22T02:37:07.4570976Z             {
2026-06-22T02:37:07.4571122Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:37:07.4571237Z               "line": 148
2026-06-22T02:37:07.4571332Z             }
2026-06-22T02:37:07.4571460Z           ]
2026-06-22T02:37:07.4571561Z         },
2026-06-22T02:37:07.4571666Z         "int": {
2026-06-22T02:37:07.4571785Z           "complete": false,
2026-06-22T02:37:07.4571891Z           "evidence": []
2026-06-22T02:37:07.4571995Z         },
2026-06-22T02:37:07.4572095Z         "unit": {
2026-06-22T02:37:07.4572320Z           "complete": true,
2026-06-22T02:37:07.4572418Z           "evidence": [
2026-06-22T02:37:07.4572528Z             {
2026-06-22T02:37:07.4572674Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4572787Z               "line": 1554
2026-06-22T02:37:07.4572893Z             },
2026-06-22T02:37:07.4573002Z             {
2026-06-22T02:37:07.4573150Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4573256Z               "line": 1577
2026-06-22T02:37:07.4573369Z             },
2026-06-22T02:37:07.4573479Z             {
2026-06-22T02:37:07.4573623Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4573727Z               "line": 1614
2026-06-22T02:37:07.4573829Z             },
2026-06-22T02:37:07.4573933Z             {
2026-06-22T02:37:07.4574065Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4574176Z               "line": 457
2026-06-22T02:37:07.4574290Z             },
2026-06-22T02:37:07.4574389Z             {
2026-06-22T02:37:07.4574534Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:37:07.4574643Z               "line": 185
2026-06-22T02:37:07.4574748Z             },
2026-06-22T02:37:07.4574839Z             {
2026-06-22T02:37:07.4574977Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:37:07.4575097Z               "line": 206
2026-06-22T02:37:07.4575196Z             },
2026-06-22T02:37:07.4575299Z             {
2026-06-22T02:37:07.4575438Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:37:07.4575546Z               "line": 232
2026-06-22T02:37:07.4575654Z             }
2026-06-22T02:37:07.4575756Z           ]
2026-06-22T02:37:07.4575861Z         }
2026-06-22T02:37:07.4575964Z       }
2026-06-22T02:37:07.4576061Z     },
2026-06-22T02:37:07.4576165Z     {
2026-06-22T02:37:07.4576274Z       "id": "REQ-INST-13",
2026-06-22T02:37:07.4576490Z       "title": "Subnet-exclusive sync + per-endpoint subnet-membership list",
2026-06-22T02:37:07.4576613Z       "requiredStages": [
2026-06-22T02:37:07.4576719Z         "impl",
2026-06-22T02:37:07.4576823Z         "unit"
2026-06-22T02:37:07.4576923Z       ],
2026-06-22T02:37:07.4577025Z       "stages": {
2026-06-22T02:37:07.4577129Z         "doc": {
2026-06-22T02:37:07.4577233Z           "complete": false,
2026-06-22T02:37:07.4577344Z           "evidence": []
2026-06-22T02:37:07.4577444Z         },
2026-06-22T02:37:07.4577548Z         "impl": {
2026-06-22T02:37:07.4577664Z           "complete": true,
2026-06-22T02:37:07.4577773Z           "evidence": [
2026-06-22T02:37:07.4577876Z             {
2026-06-22T02:37:07.4578009Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4578118Z               "line": 100
2026-06-22T02:37:07.4578226Z             },
2026-06-22T02:37:07.4578327Z             {
2026-06-22T02:37:07.4578470Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:37:07.4578565Z               "line": 171
2026-06-22T02:37:07.4578671Z             }
2026-06-22T02:37:07.4578771Z           ]
2026-06-22T02:37:07.4578870Z         },
2026-06-22T02:37:07.4579056Z         "int": {
2026-06-22T02:37:07.4579160Z           "complete": false,
2026-06-22T02:37:07.4579267Z           "evidence": []
2026-06-22T02:37:07.4579366Z         },
2026-06-22T02:37:07.4579562Z         "unit": {
2026-06-22T02:37:07.4579676Z           "complete": true,
2026-06-22T02:37:07.4579781Z           "evidence": [
2026-06-22T02:37:07.4579882Z             {
2026-06-22T02:37:07.4580028Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:37:07.4580134Z               "line": 261
2026-06-22T02:37:07.4580235Z             },
2026-06-22T02:37:07.4580334Z             {
2026-06-22T02:37:07.4580482Z               "path": "crates/spt-store/src/visibility.rs",
2026-06-22T02:37:07.4580588Z               "line": 279
2026-06-22T02:37:07.4580695Z             }
2026-06-22T02:37:07.4580795Z           ]
2026-06-22T02:37:07.4580896Z         }
2026-06-22T02:37:07.4581096Z       }
2026-06-22T02:37:07.4581196Z     },
2026-06-22T02:37:07.4581297Z     {
2026-06-22T02:37:07.4581410Z       "id": "REQ-INST-14",
2026-06-22T02:37:07.4581807Z       "title": "Resource advertisement (subnet resource registry): free-text blurb, both-authored, registry projection, visibility/whitelist-gated",
2026-06-22T02:37:07.4581921Z       "requiredStages": [
2026-06-22T02:37:07.4582016Z         "doc",
2026-06-22T02:37:07.4582122Z         "impl",
2026-06-22T02:37:07.4582226Z         "unit"
2026-06-22T02:37:07.4582321Z       ],
2026-06-22T02:37:07.4582427Z       "stages": {
2026-06-22T02:37:07.4582536Z         "doc": {
2026-06-22T02:37:07.4582636Z           "complete": true,
2026-06-22T02:37:07.4582746Z           "evidence": [
2026-06-22T02:37:07.4582847Z             {
2026-06-22T02:37:07.4582969Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4583069Z               "line": 588
2026-06-22T02:37:07.4583169Z             },
2026-06-22T02:37:07.4583267Z             {
2026-06-22T02:37:07.4583386Z               "path": "docs/STORAGE.md",
2026-06-22T02:37:07.4583492Z               "line": 49
2026-06-22T02:37:07.4583596Z             }
2026-06-22T02:37:07.4583701Z           ]
2026-06-22T02:37:07.4583806Z         },
2026-06-22T02:37:07.4583911Z         "impl": {
2026-06-22T02:37:07.4584030Z           "complete": true,
2026-06-22T02:37:07.4584149Z           "evidence": [
2026-06-22T02:37:07.4584254Z             {
2026-06-22T02:37:07.4584403Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4584512Z               "line": 410
2026-06-22T02:37:07.4584616Z             },
2026-06-22T02:37:07.4584713Z             {
2026-06-22T02:37:07.4584860Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4584969Z               "line": 367
2026-06-22T02:37:07.4585075Z             },
2026-06-22T02:37:07.4585174Z             {
2026-06-22T02:37:07.4585313Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.4585432Z               "line": 293
2026-06-22T02:37:07.4585532Z             },
2026-06-22T02:37:07.4585637Z             {
2026-06-22T02:37:07.4585766Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4585879Z               "line": 1577
2026-06-22T02:37:07.4585979Z             }
2026-06-22T02:37:07.4586083Z           ]
2026-06-22T02:37:07.4586177Z         },
2026-06-22T02:37:07.4586282Z         "int": {
2026-06-22T02:37:07.4586397Z           "complete": false,
2026-06-22T02:37:07.4586511Z           "evidence": []
2026-06-22T02:37:07.4586616Z         },
2026-06-22T02:37:07.4586712Z         "unit": {
2026-06-22T02:37:07.4586821Z           "complete": true,
2026-06-22T02:37:07.4586931Z           "evidence": [
2026-06-22T02:37:07.4587031Z             {
2026-06-22T02:37:07.4587182Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4587293Z               "line": 1163
2026-06-22T02:37:07.4587393Z             },
2026-06-22T02:37:07.4587492Z             {
2026-06-22T02:37:07.4587646Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4587755Z               "line": 944
2026-06-22T02:37:07.4587856Z             },
2026-06-22T02:37:07.4587961Z             {
2026-06-22T02:37:07.4588094Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4588205Z               "line": 1205
2026-06-22T02:37:07.4588370Z             },
2026-06-22T02:37:07.4588479Z             {
2026-06-22T02:37:07.4588608Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.4588715Z               "line": 659
2026-06-22T02:37:07.4588819Z             },
2026-06-22T02:37:07.4588911Z             {
2026-06-22T02:37:07.4589120Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4589231Z               "line": 8070
2026-06-22T02:37:07.4589331Z             }
2026-06-22T02:37:07.4589435Z           ]
2026-06-22T02:37:07.4589536Z         }
2026-06-22T02:37:07.4589636Z       }
2026-06-22T02:37:07.4589735Z     },
2026-06-22T02:37:07.4589931Z     {
2026-06-22T02:37:07.4590035Z       "id": "REQ-INST-15",
2026-06-22T02:37:07.4590772Z       "title": "Immutable home subnet (assigned at creation: auto-if-one/ask-if-many) + spt fork (cross-subnet clone to a new identity, copy-then-diverge, not re-home); adapter chosen at creation from registered hostable adapters, changed only via launch/resume-under-new (ADR-0010)",
2026-06-22T02:37:07.4590894Z       "requiredStages": [
2026-06-22T02:37:07.4590999Z         "doc",
2026-06-22T02:37:07.4591101Z         "impl",
2026-06-22T02:37:07.4591200Z         "unit"
2026-06-22T02:37:07.4591294Z       ],
2026-06-22T02:37:07.4591408Z       "stages": {
2026-06-22T02:37:07.4591519Z         "doc": {
2026-06-22T02:37:07.4591637Z           "complete": true,
2026-06-22T02:37:07.4591737Z           "evidence": [
2026-06-22T02:37:07.4591847Z             {
2026-06-22T02:37:07.4592048Z               "path": "docs/adr/0010-immutable-home-subnet-fork-not-rehome.md",
2026-06-22T02:37:07.4592162Z               "line": 3
2026-06-22T02:37:07.4592275Z             }
2026-06-22T02:37:07.4592377Z           ]
2026-06-22T02:37:07.4592481Z         },
2026-06-22T02:37:07.4592590Z         "impl": {
2026-06-22T02:37:07.4592711Z           "complete": true,
2026-06-22T02:37:07.4592810Z           "evidence": [
2026-06-22T02:37:07.4592910Z             {
2026-06-22T02:37:07.4593074Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4593177Z               "line": 353
2026-06-22T02:37:07.4593282Z             },
2026-06-22T02:37:07.4593374Z             {
2026-06-22T02:37:07.4593510Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4593619Z               "line": 60
2026-06-22T02:37:07.4593725Z             },
2026-06-22T02:37:07.4593832Z             {
2026-06-22T02:37:07.4593984Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4594090Z               "line": 368
2026-06-22T02:37:07.4594189Z             },
2026-06-22T02:37:07.4594294Z             {
2026-06-22T02:37:07.4594442Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4594556Z               "line": 417
2026-06-22T02:37:07.4594658Z             },
2026-06-22T02:37:07.4594748Z             {
2026-06-22T02:37:07.4594890Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4594987Z               "line": 19
2026-06-22T02:37:07.4595096Z             },
2026-06-22T02:37:07.4595200Z             {
2026-06-22T02:37:07.4595329Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4595467Z               "line": 70
2026-06-22T02:37:07.4595568Z             },
2026-06-22T02:37:07.4595672Z             {
2026-06-22T02:37:07.4595801Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4595907Z               "line": 96
2026-06-22T02:37:07.4596015Z             },
2026-06-22T02:37:07.4596116Z             {
2026-06-22T02:37:07.4596251Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4596358Z               "line": 121
2026-06-22T02:37:07.4596467Z             },
2026-06-22T02:37:07.4596568Z             {
2026-06-22T02:37:07.4596709Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4596813Z               "line": 172
2026-06-22T02:37:07.4596914Z             },
2026-06-22T02:37:07.4597018Z             {
2026-06-22T02:37:07.4597157Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.4597371Z               "line": 178
2026-06-22T02:37:07.4597472Z             },
2026-06-22T02:37:07.4597567Z             {
2026-06-22T02:37:07.4597695Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4597791Z               "line": 1469
2026-06-22T02:37:07.4597896Z             }
2026-06-22T02:37:07.4598001Z           ]
2026-06-22T02:37:07.4598101Z         },
2026-06-22T02:37:07.4598197Z         "int": {
2026-06-22T02:37:07.4598310Z           "complete": false,
2026-06-22T02:37:07.4598416Z           "evidence": []
2026-06-22T02:37:07.4598516Z         },
2026-06-22T02:37:07.4598616Z         "unit": {
2026-06-22T02:37:07.4598799Z           "complete": true,
2026-06-22T02:37:07.4598921Z           "evidence": [
2026-06-22T02:37:07.4599116Z             {
2026-06-22T02:37:07.4599337Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4599447Z               "line": 577
2026-06-22T02:37:07.4599557Z             },
2026-06-22T02:37:07.4599666Z             {
2026-06-22T02:37:07.4599815Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.4599919Z               "line": 638
2026-06-22T02:37:07.4600024Z             },
2026-06-22T02:37:07.4600129Z             {
2026-06-22T02:37:07.4600267Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4600378Z               "line": 213
2026-06-22T02:37:07.4600477Z             },
2026-06-22T02:37:07.4600582Z             {
2026-06-22T02:37:07.4600716Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4600820Z               "line": 249
2026-06-22T02:37:07.4600929Z             },
2026-06-22T02:37:07.4601027Z             {
2026-06-22T02:37:07.4601149Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4601263Z               "line": 262
2026-06-22T02:37:07.4601365Z             },
2026-06-22T02:37:07.4601473Z             {
2026-06-22T02:37:07.4601593Z               "path": "crates/spt-store/src/home.rs",
2026-06-22T02:37:07.4601737Z               "line": 338
2026-06-22T02:37:07.4601839Z             },
2026-06-22T02:37:07.4601949Z             {
2026-06-22T02:37:07.4602084Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.4602201Z               "line": 690
2026-06-22T02:37:07.4602321Z             },
2026-06-22T02:37:07.4602422Z             {
2026-06-22T02:37:07.4602559Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4602665Z               "line": 8007
2026-06-22T02:37:07.4602770Z             },
2026-06-22T02:37:07.4602869Z             {
2026-06-22T02:37:07.4602994Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4603118Z               "line": 9837
2026-06-22T02:37:07.4603213Z             }
2026-06-22T02:37:07.4603323Z           ]
2026-06-22T02:37:07.4603423Z         }
2026-06-22T02:37:07.4603528Z       }
2026-06-22T02:37:07.4603624Z     },
2026-06-22T02:37:07.4603732Z     {
2026-06-22T02:37:07.4603852Z       "id": "REQ-INST-2",
2026-06-22T02:37:07.4603986Z       "title": "Per-node files, synced Psyche mind",
2026-06-22T02:37:07.4604108Z       "requiredStages": [
2026-06-22T02:37:07.4604209Z         "impl",
2026-06-22T02:37:07.4604317Z         "unit"
2026-06-22T02:37:07.4604421Z       ],
2026-06-22T02:37:07.4604530Z       "stages": {
2026-06-22T02:37:07.4604641Z         "doc": {
2026-06-22T02:37:07.4604759Z           "complete": false,
2026-06-22T02:37:07.4604869Z           "evidence": []
2026-06-22T02:37:07.4604969Z         },
2026-06-22T02:37:07.4605078Z         "impl": {
2026-06-22T02:37:07.4605194Z           "complete": true,
2026-06-22T02:37:07.4605298Z           "evidence": [
2026-06-22T02:37:07.4605407Z             {
2026-06-22T02:37:07.4605561Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4605670Z               "line": 108
2026-06-22T02:37:07.4605774Z             },
2026-06-22T02:37:07.4605881Z             {
2026-06-22T02:37:07.4606008Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.4606247Z               "line": 28
2026-06-22T02:37:07.4606351Z             },
2026-06-22T02:37:07.4606453Z             {
2026-06-22T02:37:07.4606594Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.4606705Z               "line": 74
2026-06-22T02:37:07.4606811Z             },
2026-06-22T02:37:07.4606914Z             {
2026-06-22T02:37:07.4607056Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.4607157Z               "line": 96
2026-06-22T02:37:07.4607254Z             },
2026-06-22T02:37:07.4607363Z             {
2026-06-22T02:37:07.4607489Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:37:07.4607693Z               "line": 86
2026-06-22T02:37:07.4607794Z             },
2026-06-22T02:37:07.4607907Z             {
2026-06-22T02:37:07.4608056Z               "path": "crates/spt-live/src/signoff.rs",
2026-06-22T02:37:07.4608161Z               "line": 118
2026-06-22T02:37:07.4608270Z             }
2026-06-22T02:37:07.4608375Z           ]
2026-06-22T02:37:07.4608484Z         },
2026-06-22T02:37:07.4608585Z         "int": {
2026-06-22T02:37:07.4608695Z           "complete": false,
2026-06-22T02:37:07.4608804Z           "evidence": []
2026-06-22T02:37:07.4608904Z         },
2026-06-22T02:37:07.4609081Z         "unit": {
2026-06-22T02:37:07.4609195Z           "complete": true,
2026-06-22T02:37:07.4609306Z           "evidence": [
2026-06-22T02:37:07.4609410Z             {
2026-06-22T02:37:07.4609551Z               "path": "crates/spt-live/src/ingest.rs",
2026-06-22T02:37:07.4609666Z               "line": 250
2026-06-22T02:37:07.4609765Z             },
2026-06-22T02:37:07.4609873Z             {
2026-06-22T02:37:07.4610008Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:37:07.4610117Z               "line": 280
2026-06-22T02:37:07.4610221Z             }
2026-06-22T02:37:07.4610323Z           ]
2026-06-22T02:37:07.4610427Z         }
2026-06-22T02:37:07.4610522Z       }
2026-06-22T02:37:07.4610623Z     },
2026-06-22T02:37:07.4610723Z     {
2026-06-22T02:37:07.4610837Z       "id": "REQ-INST-3",
2026-06-22T02:37:07.4611009Z       "title": "Dormant (warm) / suspended (cold) resting states",
2026-06-22T02:37:07.4611128Z       "requiredStages": [
2026-06-22T02:37:07.4611237Z         "doc",
2026-06-22T02:37:07.4611342Z         "impl",
2026-06-22T02:37:07.4611452Z         "unit"
2026-06-22T02:37:07.4611557Z       ],
2026-06-22T02:37:07.4611671Z       "stages": {
2026-06-22T02:37:07.4611776Z         "doc": {
2026-06-22T02:37:07.4611882Z           "complete": true,
2026-06-22T02:37:07.4611986Z           "evidence": [
2026-06-22T02:37:07.4612091Z             {
2026-06-22T02:37:07.4612226Z               "path": "docs/DORMANCY-BUDGET.md",
2026-06-22T02:37:07.4612329Z               "line": 3
2026-06-22T02:37:07.4612438Z             }
2026-06-22T02:37:07.4612538Z           ]
2026-06-22T02:37:07.4612624Z         },
2026-06-22T02:37:07.4612738Z         "impl": {
2026-06-22T02:37:07.4612853Z           "complete": true,
2026-06-22T02:37:07.4612967Z           "evidence": [
2026-06-22T02:37:07.4613071Z             {
2026-06-22T02:37:07.4613211Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.4613321Z               "line": 60
2026-06-22T02:37:07.4613419Z             },
2026-06-22T02:37:07.4613526Z             {
2026-06-22T02:37:07.4613692Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.4613840Z               "line": 480
2026-06-22T02:37:07.4613945Z             },
2026-06-22T02:37:07.4614054Z             {
2026-06-22T02:37:07.4614212Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4614321Z               "line": 254
2026-06-22T02:37:07.4614431Z             },
2026-06-22T02:37:07.4614527Z             {
2026-06-22T02:37:07.4614678Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4614783Z               "line": 384
2026-06-22T02:37:07.4614892Z             },
2026-06-22T02:37:07.4614995Z             {
2026-06-22T02:37:07.4615253Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4615362Z               "line": 418
2026-06-22T02:37:07.4615463Z             },
2026-06-22T02:37:07.4615572Z             {
2026-06-22T02:37:07.4615715Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T02:37:07.4615811Z               "line": 74
2026-06-22T02:37:07.4615920Z             },
2026-06-22T02:37:07.4616020Z             {
2026-06-22T02:37:07.4616163Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4616267Z               "line": 234
2026-06-22T02:37:07.4616379Z             },
2026-06-22T02:37:07.4616478Z             {
2026-06-22T02:37:07.4616732Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4616849Z               "line": 396
2026-06-22T02:37:07.4616950Z             },
2026-06-22T02:37:07.4617056Z             {
2026-06-22T02:37:07.4617231Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4617381Z               "line": 45
2026-06-22T02:37:07.4617474Z             },
2026-06-22T02:37:07.4617578Z             {
2026-06-22T02:37:07.4617722Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4617829Z               "line": 114
2026-06-22T02:37:07.4617928Z             },
2026-06-22T02:37:07.4618034Z             {
2026-06-22T02:37:07.4618200Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4618316Z               "line": 152
2026-06-22T02:37:07.4618411Z             },
2026-06-22T02:37:07.4618529Z             {
2026-06-22T02:37:07.4618664Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4618782Z               "line": 168
2026-06-22T02:37:07.4618873Z             },
2026-06-22T02:37:07.4619073Z             {
2026-06-22T02:37:07.4619226Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4619331Z               "line": 178
2026-06-22T02:37:07.4619440Z             },
2026-06-22T02:37:07.4619541Z             {
2026-06-22T02:37:07.4619688Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4619798Z               "line": 210
2026-06-22T02:37:07.4619909Z             },
2026-06-22T02:37:07.4620013Z             {
2026-06-22T02:37:07.4620144Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4620255Z               "line": 287
2026-06-22T02:37:07.4620348Z             },
2026-06-22T02:37:07.4620457Z             {
2026-06-22T02:37:07.4620591Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4620701Z               "line": 311
2026-06-22T02:37:07.4620810Z             },
2026-06-22T02:37:07.4620911Z             {
2026-06-22T02:37:07.4621063Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4621173Z               "line": 389
2026-06-22T02:37:07.4621278Z             },
2026-06-22T02:37:07.4621382Z             {
2026-06-22T02:37:07.4621527Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4621631Z               "line": 438
2026-06-22T02:37:07.4621731Z             },
2026-06-22T02:37:07.4621832Z             {
2026-06-22T02:37:07.4621960Z               "path": "crates/spt-daemon/tests/budget.rs",
2026-06-22T02:37:07.4622064Z               "line": 37
2026-06-22T02:37:07.4622156Z             },
2026-06-22T02:37:07.4622269Z             {
2026-06-22T02:37:07.4622413Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4622523Z               "line": 62
2026-06-22T02:37:07.4622631Z             },
2026-06-22T02:37:07.4622738Z             {
2026-06-22T02:37:07.4622875Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.4622988Z               "line": 279
2026-06-22T02:37:07.4623093Z             },
2026-06-22T02:37:07.4623194Z             {
2026-06-22T02:37:07.4623317Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4623432Z               "line": 1848
2026-06-22T02:37:07.4623532Z             }
2026-06-22T02:37:07.4623627Z           ]
2026-06-22T02:37:07.4623838Z         },
2026-06-22T02:37:07.4623947Z         "int": {
2026-06-22T02:37:07.4624072Z           "complete": false,
2026-06-22T02:37:07.4624185Z           "evidence": []
2026-06-22T02:37:07.4624290Z         },
2026-06-22T02:37:07.4624392Z         "unit": {
2026-06-22T02:37:07.4624500Z           "complete": true,
2026-06-22T02:37:07.4624605Z           "evidence": [
2026-06-22T02:37:07.4624711Z             {
2026-06-22T02:37:07.4624857Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.4624968Z               "line": 360
2026-06-22T02:37:07.4625069Z             },
2026-06-22T02:37:07.4625167Z             {
2026-06-22T02:37:07.4625419Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4625588Z               "line": 837
2026-06-22T02:37:07.4625689Z             },
2026-06-22T02:37:07.4625803Z             {
2026-06-22T02:37:07.4625946Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4626057Z               "line": 894
2026-06-22T02:37:07.4626166Z             },
2026-06-22T02:37:07.4626265Z             {
2026-06-22T02:37:07.4626418Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4626527Z               "line": 889
2026-06-22T02:37:07.4626638Z             },
2026-06-22T02:37:07.4626742Z             {
2026-06-22T02:37:07.4626890Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4627001Z               "line": 1014
2026-06-22T02:37:07.4627110Z             },
2026-06-22T02:37:07.4627219Z             {
2026-06-22T02:37:07.4627372Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4627491Z               "line": 1264
2026-06-22T02:37:07.4627592Z             },
2026-06-22T02:37:07.4627696Z             {
2026-06-22T02:37:07.4627845Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4627945Z               "line": 1405
2026-06-22T02:37:07.4628053Z             },
2026-06-22T02:37:07.4628143Z             {
2026-06-22T02:37:07.4628291Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4628398Z               "line": 449
2026-06-22T02:37:07.4628508Z             },
2026-06-22T02:37:07.4628609Z             {
2026-06-22T02:37:07.4628751Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4628857Z               "line": 485
2026-06-22T02:37:07.4629019Z             },
2026-06-22T02:37:07.4629128Z             {
2026-06-22T02:37:07.4629262Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4629375Z               "line": 540
2026-06-22T02:37:07.4629471Z             },
2026-06-22T02:37:07.4629581Z             {
2026-06-22T02:37:07.4629724Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4629835Z               "line": 697
2026-06-22T02:37:07.4629943Z             },
2026-06-22T02:37:07.4630043Z             {
2026-06-22T02:37:07.4630188Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4630300Z               "line": 931
2026-06-22T02:37:07.4630406Z             },
2026-06-22T02:37:07.4630517Z             {
2026-06-22T02:37:07.4630653Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4630772Z               "line": 945
2026-06-22T02:37:07.4630867Z             },
2026-06-22T02:37:07.4630980Z             {
2026-06-22T02:37:07.4631128Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4631237Z               "line": 1290
2026-06-22T02:37:07.4631342Z             },
2026-06-22T02:37:07.4631443Z             {
2026-06-22T02:37:07.4631590Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.4631699Z               "line": 609
2026-06-22T02:37:07.4631809Z             },
2026-06-22T02:37:07.4631919Z             {
2026-06-22T02:37:07.4632039Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4632153Z               "line": 8031
2026-06-22T02:37:07.4632252Z             }
2026-06-22T02:37:07.4632458Z           ]
2026-06-22T02:37:07.4632558Z         }
2026-06-22T02:37:07.4632668Z       }
2026-06-22T02:37:07.4632768Z     },
2026-06-22T02:37:07.4632858Z     {
2026-06-22T02:37:07.4632968Z       "id": "REQ-INST-4",
2026-06-22T02:37:07.4633168Z       "title": "active to dormant/suspended fires a transition echo commune",
2026-06-22T02:37:07.4633288Z       "requiredStages": [
2026-06-22T02:37:07.4633389Z         "impl",
2026-06-22T02:37:07.4633496Z         "unit"
2026-06-22T02:37:07.4633600Z       ],
2026-06-22T02:37:07.4633692Z       "stages": {
2026-06-22T02:37:07.4633802Z         "doc": {
2026-06-22T02:37:07.4633920Z           "complete": false,
2026-06-22T02:37:07.4634149Z           "evidence": []
2026-06-22T02:37:07.4634254Z         },
2026-06-22T02:37:07.4634365Z         "impl": {
2026-06-22T02:37:07.4634483Z           "complete": true,
2026-06-22T02:37:07.4634593Z           "evidence": [
2026-06-22T02:37:07.4634698Z             {
2026-06-22T02:37:07.4634841Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4634956Z               "line": 385
2026-06-22T02:37:07.4635060Z             },
2026-06-22T02:37:07.4635165Z             {
2026-06-22T02:37:07.4635309Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4635417Z               "line": 202
2026-06-22T02:37:07.4635523Z             },
2026-06-22T02:37:07.4635629Z             {
2026-06-22T02:37:07.4635769Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4635874Z               "line": 234
2026-06-22T02:37:07.4635984Z             },
2026-06-22T02:37:07.4636091Z             {
2026-06-22T02:37:07.4636230Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4636341Z               "line": 274
2026-06-22T02:37:07.4636448Z             }
2026-06-22T02:37:07.4636559Z           ]
2026-06-22T02:37:07.4636659Z         },
2026-06-22T02:37:07.4636768Z         "int": {
2026-06-22T02:37:07.4636888Z           "complete": false,
2026-06-22T02:37:07.4636998Z           "evidence": []
2026-06-22T02:37:07.4637111Z         },
2026-06-22T02:37:07.4637217Z         "unit": {
2026-06-22T02:37:07.4637336Z           "complete": true,
2026-06-22T02:37:07.4637446Z           "evidence": [
2026-06-22T02:37:07.4637551Z             {
2026-06-22T02:37:07.4637694Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4637799Z               "line": 889
2026-06-22T02:37:07.4637904Z             },
2026-06-22T02:37:07.4638004Z             {
2026-06-22T02:37:07.4638139Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4638247Z               "line": 561
2026-06-22T02:37:07.4638352Z             },
2026-06-22T02:37:07.4638468Z             {
2026-06-22T02:37:07.4638599Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4638713Z               "line": 668
2026-06-22T02:37:07.4638813Z             },
2026-06-22T02:37:07.4638921Z             {
2026-06-22T02:37:07.4639140Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4639250Z               "line": 750
2026-06-22T02:37:07.4639349Z             }
2026-06-22T02:37:07.4639451Z           ]
2026-06-22T02:37:07.4639556Z         }
2026-06-22T02:37:07.4639659Z       }
2026-06-22T02:37:07.4639765Z     },
2026-06-22T02:37:07.4639860Z     {
2026-06-22T02:37:07.4639983Z       "id": "REQ-INST-5",
2026-06-22T02:37:07.4640179Z       "title": "Two-tier context sync (live to all, project to same-project)",
2026-06-22T02:37:07.4640289Z       "requiredStages": [
2026-06-22T02:37:07.4640400Z         "impl",
2026-06-22T02:37:07.4640508Z         "unit",
2026-06-22T02:37:07.4640618Z         "int"
2026-06-22T02:37:07.4640719Z       ],
2026-06-22T02:37:07.4640827Z       "stages": {
2026-06-22T02:37:07.4640937Z         "doc": {
2026-06-22T02:37:07.4641044Z           "complete": false,
2026-06-22T02:37:07.4641161Z           "evidence": []
2026-06-22T02:37:07.4641256Z         },
2026-06-22T02:37:07.4641370Z         "impl": {
2026-06-22T02:37:07.4645244Z           "complete": true,
2026-06-22T02:37:07.4645536Z           "evidence": [
2026-06-22T02:37:07.4645654Z             {
2026-06-22T02:37:07.4645807Z               "path": "crates/spt-daemon/src/pump/sync.rs",
2026-06-22T02:37:07.4645921Z               "line": 85
2026-06-22T02:37:07.4646025Z             },
2026-06-22T02:37:07.4646131Z             {
2026-06-22T02:37:07.4646278Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4646387Z               "line": 68
2026-06-22T02:37:07.4646487Z             },
2026-06-22T02:37:07.4646576Z             {
2026-06-22T02:37:07.4646723Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4646833Z               "line": 99
2026-06-22T02:37:07.4647042Z             },
2026-06-22T02:37:07.4647148Z             {
2026-06-22T02:37:07.4647290Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4647410Z               "line": 183
2026-06-22T02:37:07.4647506Z             },
2026-06-22T02:37:07.4647595Z             {
2026-06-22T02:37:07.4647740Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4647839Z               "line": 314
2026-06-22T02:37:07.4647944Z             }
2026-06-22T02:37:07.4648049Z           ]
2026-06-22T02:37:07.4648149Z         },
2026-06-22T02:37:07.4648259Z         "int": {
2026-06-22T02:37:07.4648379Z           "complete": true,
2026-06-22T02:37:07.4648492Z           "evidence": [
2026-06-22T02:37:07.4648597Z             {
2026-06-22T02:37:07.4648741Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.4648854Z               "line": 156
2026-06-22T02:37:07.4649046Z             },
2026-06-22T02:37:07.4649150Z             {
2026-06-22T02:37:07.4649297Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:37:07.4649406Z               "line": 145
2026-06-22T02:37:07.4649510Z             },
2026-06-22T02:37:07.4649609Z             {
2026-06-22T02:37:07.4649762Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.4649876Z               "line": 707
2026-06-22T02:37:07.4649977Z             },
2026-06-22T02:37:07.4650077Z             {
2026-06-22T02:37:07.4650229Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.4650340Z               "line": 1069
2026-06-22T02:37:07.4650449Z             }
2026-06-22T02:37:07.4650548Z           ]
2026-06-22T02:37:07.4650640Z         },
2026-06-22T02:37:07.4650749Z         "unit": {
2026-06-22T02:37:07.4650868Z           "complete": true,
2026-06-22T02:37:07.4650974Z           "evidence": [
2026-06-22T02:37:07.4651078Z             {
2026-06-22T02:37:07.4651221Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4651346Z               "line": 552
2026-06-22T02:37:07.4651450Z             },
2026-06-22T02:37:07.4651551Z             {
2026-06-22T02:37:07.4651684Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4651797Z               "line": 595
2026-06-22T02:37:07.4651897Z             },
2026-06-22T02:37:07.4652006Z             {
2026-06-22T02:37:07.4652157Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:37:07.4652272Z               "line": 219
2026-06-22T02:37:07.4652372Z             }
2026-06-22T02:37:07.4652481Z           ]
2026-06-22T02:37:07.4652587Z         }
2026-06-22T02:37:07.4652692Z       }
2026-06-22T02:37:07.4652796Z     },
2026-06-22T02:37:07.4652892Z     {
2026-06-22T02:37:07.4653011Z       "id": "REQ-INST-6",
2026-06-22T02:37:07.4653212Z       "title": "Deferred messages not delivered to dormant/suspended instances",
2026-06-22T02:37:07.4653335Z       "requiredStages": [
2026-06-22T02:37:07.4653430Z         "impl",
2026-06-22T02:37:07.4653536Z         "unit",
2026-06-22T02:37:07.4653650Z         "int"
2026-06-22T02:37:07.4653750Z       ],
2026-06-22T02:37:07.4653860Z       "stages": {
2026-06-22T02:37:07.4653968Z         "doc": {
2026-06-22T02:37:07.4654084Z           "complete": true,
2026-06-22T02:37:07.4654195Z           "evidence": [
2026-06-22T02:37:07.4654292Z             {
2026-06-22T02:37:07.4654542Z               "path": "docs/DEFERRED.md",
2026-06-22T02:37:07.4654655Z               "line": 13
2026-06-22T02:37:07.4654764Z             }
2026-06-22T02:37:07.4654860Z           ]
2026-06-22T02:37:07.4654969Z         },
2026-06-22T02:37:07.4655074Z         "impl": {
2026-06-22T02:37:07.4655198Z           "complete": true,
2026-06-22T02:37:07.4655307Z           "evidence": [
2026-06-22T02:37:07.4655408Z             {
2026-06-22T02:37:07.4655556Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.4655670Z               "line": 391
2026-06-22T02:37:07.4655776Z             },
2026-06-22T02:37:07.4655870Z             {
2026-06-22T02:37:07.4656124Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:37:07.4656238Z               "line": 27
2026-06-22T02:37:07.4656338Z             },
2026-06-22T02:37:07.4656443Z             {
2026-06-22T02:37:07.4656590Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:37:07.4656701Z               "line": 73
2026-06-22T02:37:07.4656814Z             },
2026-06-22T02:37:07.4656918Z             {
2026-06-22T02:37:07.4657066Z               "path": "crates/spt-daemon/src/resthost.rs",
2026-06-22T02:37:07.4657174Z               "line": 182
2026-06-22T02:37:07.4657278Z             },
2026-06-22T02:37:07.4657379Z             {
2026-06-22T02:37:07.4657522Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4657631Z               "line": 426
2026-06-22T02:37:07.4657727Z             },
2026-06-22T02:37:07.4657836Z             {
2026-06-22T02:37:07.4657975Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T02:37:07.4658085Z               "line": 31
2026-06-22T02:37:07.4658184Z             },
2026-06-22T02:37:07.4658290Z             {
2026-06-22T02:37:07.4658419Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.4658528Z               "line": 202
2026-06-22T02:37:07.4658634Z             },
2026-06-22T02:37:07.4658738Z             {
2026-06-22T02:37:07.4658870Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.4659038Z               "line": 83
2026-06-22T02:37:07.4659143Z             },
2026-06-22T02:37:07.4659239Z             {
2026-06-22T02:37:07.4659376Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4659487Z               "line": 1849
2026-06-22T02:37:07.4659593Z             },
2026-06-22T02:37:07.4659701Z             {
2026-06-22T02:37:07.4659828Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.4659933Z               "line": 179
2026-06-22T02:37:07.4660036Z             },
2026-06-22T02:37:07.4660140Z             {
2026-06-22T02:37:07.4660275Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.4660375Z               "line": 215
2026-06-22T02:37:07.4660474Z             }
2026-06-22T02:37:07.4660575Z           ]
2026-06-22T02:37:07.4660680Z         },
2026-06-22T02:37:07.4660784Z         "int": {
2026-06-22T02:37:07.4660904Z           "complete": true,
2026-06-22T02:37:07.4661019Z           "evidence": [
2026-06-22T02:37:07.4661118Z             {
2026-06-22T02:37:07.4661271Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.4661376Z               "line": 721
2026-06-22T02:37:07.4661481Z             },
2026-06-22T02:37:07.4661582Z             {
2026-06-22T02:37:07.4661728Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.4661830Z               "line": 1114
2026-06-22T02:37:07.4661925Z             },
2026-06-22T02:37:07.4662025Z             {
2026-06-22T02:37:07.4662159Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.4662268Z               "line": 726
2026-06-22T02:37:07.4662371Z             }
2026-06-22T02:37:07.4662476Z           ]
2026-06-22T02:37:07.4662585Z         },
2026-06-22T02:37:07.4662688Z         "unit": {
2026-06-22T02:37:07.4662808Z           "complete": true,
2026-06-22T02:37:07.4662918Z           "evidence": [
2026-06-22T02:37:07.4663022Z             {
2026-06-22T02:37:07.4663271Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.4663366Z               "line": 661
2026-06-22T02:37:07.4663462Z             },
2026-06-22T02:37:07.4663562Z             {
2026-06-22T02:37:07.4663709Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.4663810Z               "line": 899
2026-06-22T02:37:07.4663919Z             },
2026-06-22T02:37:07.4664019Z             {
2026-06-22T02:37:07.4664158Z               "path": "crates/spt-net/src/net/rest.rs",
2026-06-22T02:37:07.4664267Z               "line": 66
2026-06-22T02:37:07.4664363Z             },
2026-06-22T02:37:07.4664463Z             {
2026-06-22T02:37:07.4664702Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.4664806Z               "line": 297
2026-06-22T02:37:07.4664915Z             },
2026-06-22T02:37:07.4665017Z             {
2026-06-22T02:37:07.4665154Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.4665262Z               "line": 203
2026-06-22T02:37:07.4665372Z             }
2026-06-22T02:37:07.4665478Z           ]
2026-06-22T02:37:07.4665582Z         }
2026-06-22T02:37:07.4665692Z       }
2026-06-22T02:37:07.4665793Z     },
2026-06-22T02:37:07.4665896Z     {
2026-06-22T02:37:07.4666002Z       "id": "REQ-INST-7",
2026-06-22T02:37:07.4666168Z       "title": "Subnet registry + bare-id resolution policy",
2026-06-22T02:37:07.4666283Z       "requiredStages": [
2026-06-22T02:37:07.4666393Z         "impl",
2026-06-22T02:37:07.4666501Z         "unit",
2026-06-22T02:37:07.4666613Z         "int"
2026-06-22T02:37:07.4666717Z       ],
2026-06-22T02:37:07.4666826Z       "stages": {
2026-06-22T02:37:07.4666942Z         "doc": {
2026-06-22T02:37:07.4667046Z           "complete": false,
2026-06-22T02:37:07.4667160Z           "evidence": []
2026-06-22T02:37:07.4667261Z         },
2026-06-22T02:37:07.4667356Z         "impl": {
2026-06-22T02:37:07.4667469Z           "complete": true,
2026-06-22T02:37:07.4667578Z           "evidence": [
2026-06-22T02:37:07.4667687Z             {
2026-06-22T02:37:07.4667833Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.4667944Z               "line": 436
2026-06-22T02:37:07.4668053Z             },
2026-06-22T02:37:07.4668153Z             {
2026-06-22T02:37:07.4668311Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4668415Z               "line": 27
2026-06-22T02:37:07.4668525Z             },
2026-06-22T02:37:07.4668621Z             {
2026-06-22T02:37:07.4668768Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4668879Z               "line": 207
2026-06-22T02:37:07.4669054Z             },
2026-06-22T02:37:07.4669165Z             {
2026-06-22T02:37:07.4669312Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4669417Z               "line": 344
2026-06-22T02:37:07.4669523Z             },
2026-06-22T02:37:07.4669631Z             {
2026-06-22T02:37:07.4669765Z               "path": "crates/spt-net/src/net/ndjson.rs",
2026-06-22T02:37:07.4669876Z               "line": 59
2026-06-22T02:37:07.4669984Z             },
2026-06-22T02:37:07.4670085Z             {
2026-06-22T02:37:07.4670233Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4670341Z               "line": 41
2026-06-22T02:37:07.4670445Z             },
2026-06-22T02:37:07.4670550Z             {
2026-06-22T02:37:07.4670686Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.4670797Z               "line": 27
2026-06-22T02:37:07.4670897Z             },
2026-06-22T02:37:07.4671006Z             {
2026-06-22T02:37:07.4671150Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.4671264Z               "line": 119
2026-06-22T02:37:07.4671358Z             },
2026-06-22T02:37:07.4671455Z             {
2026-06-22T02:37:07.4671602Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.4671703Z               "line": 134
2026-06-22T02:37:07.4671908Z             },
2026-06-22T02:37:07.4672012Z             {
2026-06-22T02:37:07.4672151Z               "path": "crates/spt-store/src/registry.rs",
2026-06-22T02:37:07.4672255Z               "line": 139
2026-06-22T02:37:07.4672356Z             }
2026-06-22T02:37:07.4672461Z           ]
2026-06-22T02:37:07.4672560Z         },
2026-06-22T02:37:07.4672666Z         "int": {
2026-06-22T02:37:07.4672776Z           "complete": true,
2026-06-22T02:37:07.4672889Z           "evidence": [
2026-06-22T02:37:07.4672984Z             {
2026-06-22T02:37:07.4673121Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:37:07.4673234Z               "line": 145
2026-06-22T02:37:07.4673445Z             },
2026-06-22T02:37:07.4673549Z             {
2026-06-22T02:37:07.4673693Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.4673807Z               "line": 665
2026-06-22T02:37:07.4673916Z             },
2026-06-22T02:37:07.4674017Z             {
2026-06-22T02:37:07.4674174Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.4674284Z               "line": 964
2026-06-22T02:37:07.4674389Z             }
2026-06-22T02:37:07.4674493Z           ]
2026-06-22T02:37:07.4674593Z         },
2026-06-22T02:37:07.4674703Z         "unit": {
2026-06-22T02:37:07.4674813Z           "complete": true,
2026-06-22T02:37:07.4674928Z           "evidence": [
2026-06-22T02:37:07.4675028Z             {
2026-06-22T02:37:07.4675184Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4675291Z               "line": 1134
2026-06-22T02:37:07.4675394Z             },
2026-06-22T02:37:07.4675494Z             {
2026-06-22T02:37:07.4675644Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4675746Z               "line": 1521
2026-06-22T02:37:07.4675851Z             },
2026-06-22T02:37:07.4675952Z             {
2026-06-22T02:37:07.4676103Z               "path": "crates/spt-daemon/tests/replicate.rs",
2026-06-22T02:37:07.4676214Z               "line": 84
2026-06-22T02:37:07.4676323Z             },
2026-06-22T02:37:07.4676423Z             {
2026-06-22T02:37:07.4676572Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4676682Z               "line": 812
2026-06-22T02:37:07.4676785Z             },
2026-06-22T02:37:07.4676891Z             {
2026-06-22T02:37:07.4677029Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4677138Z               "line": 823
2026-06-22T02:37:07.4677244Z             },
2026-06-22T02:37:07.4677349Z             {
2026-06-22T02:37:07.4677488Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4677592Z               "line": 838
2026-06-22T02:37:07.4677701Z             },
2026-06-22T02:37:07.4677807Z             {
2026-06-22T02:37:07.4677953Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.4678062Z               "line": 166
2026-06-22T02:37:07.4678167Z             },
2026-06-22T02:37:07.4678275Z             {
2026-06-22T02:37:07.4678427Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.4678533Z               "line": 181
2026-06-22T02:37:07.4678618Z             },
2026-06-22T02:37:07.4678722Z             {
2026-06-22T02:37:07.4678857Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.4679047Z               "line": 214
2026-06-22T02:37:07.4679139Z             }
2026-06-22T02:37:07.4679239Z           ]
2026-06-22T02:37:07.4679343Z         }
2026-06-22T02:37:07.4679434Z       }
2026-06-22T02:37:07.4679539Z     },
2026-06-22T02:37:07.4679633Z     {
2026-06-22T02:37:07.4679744Z       "id": "REQ-INST-8",
2026-06-22T02:37:07.4679929Z       "title": "Remote-control mode distinct from local operation",
2026-06-22T02:37:07.4680045Z       "requiredStages": [
2026-06-22T02:37:07.4680149Z         "impl",
2026-06-22T02:37:07.4680249Z         "unit",
2026-06-22T02:37:07.4680355Z         "int"
2026-06-22T02:37:07.4680459Z       ],
2026-06-22T02:37:07.4680665Z       "stages": {
2026-06-22T02:37:07.4680770Z         "doc": {
2026-06-22T02:37:07.4680897Z           "complete": false,
2026-06-22T02:37:07.4681001Z           "evidence": []
2026-06-22T02:37:07.4681101Z         },
2026-06-22T02:37:07.4681214Z         "impl": {
2026-06-22T02:37:07.4681323Z           "complete": true,
2026-06-22T02:37:07.4681429Z           "evidence": [
2026-06-22T02:37:07.4681528Z             {
2026-06-22T02:37:07.4681672Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.4681782Z               "line": 202
2026-06-22T02:37:07.4681886Z             },
2026-06-22T02:37:07.4681987Z             {
2026-06-22T02:37:07.4682229Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.4682340Z               "line": 504
2026-06-22T02:37:07.4682439Z             },
2026-06-22T02:37:07.4682539Z             {
2026-06-22T02:37:07.4682673Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.4682772Z               "line": 544
2026-06-22T02:37:07.4682887Z             },
2026-06-22T02:37:07.4682993Z             {
2026-06-22T02:37:07.4683125Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.4683231Z               "line": 62
2026-06-22T02:37:07.4683331Z             }
2026-06-22T02:37:07.4683444Z           ]
2026-06-22T02:37:07.4683549Z         },
2026-06-22T02:37:07.4683658Z         "int": {
2026-06-22T02:37:07.4683766Z           "complete": true,
2026-06-22T02:37:07.4683880Z           "evidence": [
2026-06-22T02:37:07.4683981Z             {
2026-06-22T02:37:07.4684132Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.4684243Z               "line": 415
2026-06-22T02:37:07.4684353Z             },
2026-06-22T02:37:07.4684456Z             {
2026-06-22T02:37:07.4684591Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.4684701Z               "line": 1028
2026-06-22T02:37:07.4684815Z             }
2026-06-22T02:37:07.4684916Z           ]
2026-06-22T02:37:07.4685010Z         },
2026-06-22T02:37:07.4685120Z         "unit": {
2026-06-22T02:37:07.4685240Z           "complete": true,
2026-06-22T02:37:07.4685344Z           "evidence": [
2026-06-22T02:37:07.4685454Z             {
2026-06-22T02:37:07.4685597Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.4685693Z               "line": 369
2026-06-22T02:37:07.4685798Z             },
2026-06-22T02:37:07.4685907Z             {
2026-06-22T02:37:07.4686050Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.4686161Z               "line": 636
2026-06-22T02:37:07.4686269Z             },
2026-06-22T02:37:07.4686373Z             {
2026-06-22T02:37:07.4686517Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.4686636Z               "line": 116
2026-06-22T02:37:07.4686740Z             },
2026-06-22T02:37:07.4686846Z             {
2026-06-22T02:37:07.4686983Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.4687104Z               "line": 160
2026-06-22T02:37:07.4687217Z             }
2026-06-22T02:37:07.4687321Z           ]
2026-06-22T02:37:07.4687428Z         }
2026-06-22T02:37:07.4687527Z       }
2026-06-22T02:37:07.4687632Z     },
2026-06-22T02:37:07.4687733Z     {
2026-06-22T02:37:07.4687847Z       "id": "REQ-INST-9",
2026-06-22T02:37:07.4688062Z       "title": "Multi-subnet membership (same-user N subnets; cross-user seam)",
2026-06-22T02:37:07.4688166Z       "requiredStages": [
2026-06-22T02:37:07.4688275Z         "impl",
2026-06-22T02:37:07.4688377Z         "unit"
2026-06-22T02:37:07.4688486Z       ],
2026-06-22T02:37:07.4688589Z       "stages": {
2026-06-22T02:37:07.4688708Z         "doc": {
2026-06-22T02:37:07.4688827Z           "complete": false,
2026-06-22T02:37:07.4688930Z           "evidence": []
2026-06-22T02:37:07.4689122Z         },
2026-06-22T02:37:07.4689225Z         "impl": {
2026-06-22T02:37:07.4689341Z           "complete": true,
2026-06-22T02:37:07.4689450Z           "evidence": [
2026-06-22T02:37:07.4689670Z             {
2026-06-22T02:37:07.4689822Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4689931Z               "line": 449
2026-06-22T02:37:07.4690038Z             }
2026-06-22T02:37:07.4690147Z           ]
2026-06-22T02:37:07.4690251Z         },
2026-06-22T02:37:07.4690352Z         "int": {
2026-06-22T02:37:07.4690457Z           "complete": false,
2026-06-22T02:37:07.4690570Z           "evidence": []
2026-06-22T02:37:07.4690672Z         },
2026-06-22T02:37:07.4690775Z         "unit": {
2026-06-22T02:37:07.4690890Z           "complete": true,
2026-06-22T02:37:07.4691001Z           "evidence": [
2026-06-22T02:37:07.4691196Z             {
2026-06-22T02:37:07.4691349Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4691452Z               "line": 1397
2026-06-22T02:37:07.4691562Z             },
2026-06-22T02:37:07.4691661Z             {
2026-06-22T02:37:07.4691792Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4691917Z               "line": 1406
2026-06-22T02:37:07.4692022Z             },
2026-06-22T02:37:07.4692126Z             {
2026-06-22T02:37:07.4692266Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4692374Z               "line": 1422
2026-06-22T02:37:07.4692483Z             },
2026-06-22T02:37:07.4692585Z             {
2026-06-22T02:37:07.4692722Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4692832Z               "line": 1434
2026-06-22T02:37:07.4692928Z             },
2026-06-22T02:37:07.4693037Z             {
2026-06-22T02:37:07.4693167Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.4693280Z               "line": 1454
2026-06-22T02:37:07.4693385Z             }
2026-06-22T02:37:07.4693481Z           ]
2026-06-22T02:37:07.4693586Z         }
2026-06-22T02:37:07.4693695Z       }
2026-06-22T02:37:07.4693801Z     },
2026-06-22T02:37:07.4693891Z     {
2026-06-22T02:37:07.4694014Z       "id": "REQ-INSTALL-1",
2026-06-22T02:37:07.4694227Z       "title": "Two install paths; signed one-line script; OS-service registration",
2026-06-22T02:37:07.4694350Z       "requiredStages": [
2026-06-22T02:37:07.4694440Z         "doc",
2026-06-22T02:37:07.4694541Z         "impl",
2026-06-22T02:37:07.4694650Z         "int"
2026-06-22T02:37:07.4694755Z       ],
2026-06-22T02:37:07.4694870Z       "stages": {
2026-06-22T02:37:07.4694974Z         "doc": {
2026-06-22T02:37:07.4695089Z           "complete": true,
2026-06-22T02:37:07.4695194Z           "evidence": [
2026-06-22T02:37:07.4695308Z             {
2026-06-22T02:37:07.4695433Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4695542Z               "line": 754
2026-06-22T02:37:07.4695656Z             }
2026-06-22T02:37:07.4695758Z           ]
2026-06-22T02:37:07.4695852Z         },
2026-06-22T02:37:07.4695957Z         "impl": {
2026-06-22T02:37:07.4696077Z           "complete": true,
2026-06-22T02:37:07.4696190Z           "evidence": [
2026-06-22T02:37:07.4696295Z             {
2026-06-22T02:37:07.4696430Z               "path": "installer/install.ps1",
2026-06-22T02:37:07.4696543Z               "line": 57
2026-06-22T02:37:07.4696654Z             },
2026-06-22T02:37:07.4696759Z             {
2026-06-22T02:37:07.4696886Z               "path": "installer/install.sh",
2026-06-22T02:37:07.4697000Z               "line": 52
2026-06-22T02:37:07.4697101Z             }
2026-06-22T02:37:07.4697215Z           ]
2026-06-22T02:37:07.4697314Z         },
2026-06-22T02:37:07.4697421Z         "int": {
2026-06-22T02:37:07.4697534Z           "complete": true,
2026-06-22T02:37:07.4697634Z           "evidence": [
2026-06-22T02:37:07.4697744Z             {
2026-06-22T02:37:07.4697891Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:37:07.4698016Z               "line": 21
2026-06-22T02:37:07.4698116Z             }
2026-06-22T02:37:07.4698225Z           ]
2026-06-22T02:37:07.4698322Z         },
2026-06-22T02:37:07.4698431Z         "unit": {
2026-06-22T02:37:07.4698632Z           "complete": false,
2026-06-22T02:37:07.4698741Z           "evidence": []
2026-06-22T02:37:07.4698845Z         }
2026-06-22T02:37:07.4699022Z       }
2026-06-22T02:37:07.4699116Z     },
2026-06-22T02:37:07.4699220Z     {
2026-06-22T02:37:07.4699340Z       "id": "REQ-INSTALL-10",
2026-06-22T02:37:07.4700792Z       "title": "Windows at-logon autostart runs the daemon in the background with no persistent window: the scheduled task launches `spt daemon start` (which spawn_detaches a console-less DETACHED_PROCESS daemon and exits) rather than the foreground `spt daemon run` — Task Scheduler's interactive ONLOGON launch of a long-lived console process otherwise leaves a visible console window for the daemon's whole lifetime (v0.7.4)",
2026-06-22T02:37:07.4701031Z       "requiredStages": [
2026-06-22T02:37:07.4701140Z         "impl",
2026-06-22T02:37:07.4701246Z         "unit"
2026-06-22T02:37:07.4701350Z       ],
2026-06-22T02:37:07.4701460Z       "stages": {
2026-06-22T02:37:07.4701566Z         "doc": {
2026-06-22T02:37:07.4701694Z           "complete": false,
2026-06-22T02:37:07.4701795Z           "evidence": []
2026-06-22T02:37:07.4701904Z         },
2026-06-22T02:37:07.4702007Z         "impl": {
2026-06-22T02:37:07.4702126Z           "complete": true,
2026-06-22T02:37:07.4702240Z           "evidence": [
2026-06-22T02:37:07.4702343Z             {
2026-06-22T02:37:07.4702477Z               "path": "installer/install.ps1",
2026-06-22T02:37:07.4702588Z               "line": 191
2026-06-22T02:37:07.4702686Z             }
2026-06-22T02:37:07.4702787Z           ]
2026-06-22T02:37:07.4702897Z         },
2026-06-22T02:37:07.4703006Z         "int": {
2026-06-22T02:37:07.4703126Z           "complete": false,
2026-06-22T02:37:07.4703241Z           "evidence": []
2026-06-22T02:37:07.4703339Z         },
2026-06-22T02:37:07.4703455Z         "unit": {
2026-06-22T02:37:07.4703559Z           "complete": true,
2026-06-22T02:37:07.4703674Z           "evidence": [
2026-06-22T02:37:07.4703785Z             {
2026-06-22T02:37:07.4703921Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:37:07.4704037Z               "line": 211
2026-06-22T02:37:07.4704137Z             }
2026-06-22T02:37:07.4704241Z           ]
2026-06-22T02:37:07.4704347Z         }
2026-06-22T02:37:07.4704452Z       }
2026-06-22T02:37:07.4704560Z     },
2026-06-22T02:37:07.4704664Z     {
2026-06-22T02:37:07.4704788Z       "id": "REQ-INSTALL-11",
2026-06-22T02:37:07.4706579Z       "title": "Adapter command templates resolve their program against the adapter's install dir BEFORE PATH: a `.spt`-shipped binary (dropped to adapters/_github/<safe>/ by --release/--github acquisition, or kept in the source_dir under copy-mode where only manifest+strings/ are copied to adapters/<name>) runs without any PATH placement — a bare-name template token (e.g. `claude-spt-digest ...`) is rewritten to <install_dir>/<program>(.exe on Windows) when that file exists, else left bare for the PATH fallback. Makes a `.spt` self-contained (closes the --release bundled-binary gap perri confirmed) (v0.7.4)",
2026-06-22T02:37:07.4706731Z       "requiredStages": [
2026-06-22T02:37:07.4706841Z         "doc",
2026-06-22T02:37:07.4706952Z         "impl",
2026-06-22T02:37:07.4707065Z         "unit"
2026-06-22T02:37:07.4707170Z       ],
2026-06-22T02:37:07.4707286Z       "stages": {
2026-06-22T02:37:07.4707394Z         "doc": {
2026-06-22T02:37:07.4707507Z           "complete": true,
2026-06-22T02:37:07.4707627Z           "evidence": [
2026-06-22T02:37:07.4707718Z             {
2026-06-22T02:37:07.4707841Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4707942Z               "line": 138
2026-06-22T02:37:07.4708052Z             },
2026-06-22T02:37:07.4708165Z             {
2026-06-22T02:37:07.4708290Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.4708399Z               "line": 82
2026-06-22T02:37:07.4708500Z             }
2026-06-22T02:37:07.4708609Z           ]
2026-06-22T02:37:07.4708710Z         },
2026-06-22T02:37:07.4708824Z         "impl": {
2026-06-22T02:37:07.4709148Z           "complete": true,
2026-06-22T02:37:07.4709258Z           "evidence": [
2026-06-22T02:37:07.4709362Z             {
2026-06-22T02:37:07.4709512Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.4709629Z               "line": 223
2026-06-22T02:37:07.4709724Z             },
2026-06-22T02:37:07.4709829Z             {
2026-06-22T02:37:07.4709975Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4710084Z               "line": 99
2026-06-22T02:37:07.4710194Z             },
2026-06-22T02:37:07.4710294Z             {
2026-06-22T02:37:07.4710446Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.4710656Z               "line": 117
2026-06-22T02:37:07.4710756Z             },
2026-06-22T02:37:07.4710853Z             {
2026-06-22T02:37:07.4710999Z               "path": "crates/spt-daemon/src/livehost.rs",
2026-06-22T02:37:07.4711115Z               "line": 332
2026-06-22T02:37:07.4711219Z             },
2026-06-22T02:37:07.4711323Z             {
2026-06-22T02:37:07.4711463Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.4711572Z               "line": 88
2026-06-22T02:37:07.4711681Z             },
2026-06-22T02:37:07.4711792Z             {
2026-06-22T02:37:07.4711925Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.4712035Z               "line": 104
2026-06-22T02:37:07.4712140Z             },
2026-06-22T02:37:07.4712244Z             {
2026-06-22T02:37:07.4712393Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4712506Z               "line": 297
2026-06-22T02:37:07.4712610Z             },
2026-06-22T02:37:07.4712715Z             {
2026-06-22T02:37:07.4712856Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4712970Z               "line": 332
2026-06-22T02:37:07.4713066Z             },
2026-06-22T02:37:07.4713166Z             {
2026-06-22T02:37:07.4713333Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4713447Z               "line": 523
2026-06-22T02:37:07.4713556Z             },
2026-06-22T02:37:07.4713657Z             {
2026-06-22T02:37:07.4713815Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4713919Z               "line": 546
2026-06-22T02:37:07.4714030Z             },
2026-06-22T02:37:07.4714129Z             {
2026-06-22T02:37:07.4714267Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4714373Z               "line": 561
2026-06-22T02:37:07.4714472Z             },
2026-06-22T02:37:07.4714582Z             {
2026-06-22T02:37:07.4714720Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.4714830Z               "line": 492
2026-06-22T02:37:07.4714940Z             }
2026-06-22T02:37:07.4715040Z           ]
2026-06-22T02:37:07.4715148Z         },
2026-06-22T02:37:07.4715253Z         "int": {
2026-06-22T02:37:07.4715367Z           "complete": false,
2026-06-22T02:37:07.4715479Z           "evidence": []
2026-06-22T02:37:07.4715584Z         },
2026-06-22T02:37:07.4715695Z         "unit": {
2026-06-22T02:37:07.4715804Z           "complete": true,
2026-06-22T02:37:07.4715914Z           "evidence": [
2026-06-22T02:37:07.4716019Z             {
2026-06-22T02:37:07.4716166Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4716281Z               "line": 799
2026-06-22T02:37:07.4716381Z             },
2026-06-22T02:37:07.4716485Z             {
2026-06-22T02:37:07.4716620Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4716791Z               "line": 811
2026-06-22T02:37:07.4716888Z             },
2026-06-22T02:37:07.4717001Z             {
2026-06-22T02:37:07.4717149Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.4717254Z               "line": 820
2026-06-22T02:37:07.4717354Z             }
2026-06-22T02:37:07.4717454Z           ]
2026-06-22T02:37:07.4717555Z         }
2026-06-22T02:37:07.4717658Z       }
2026-06-22T02:37:07.4717865Z     },
2026-06-22T02:37:07.4717972Z     {
2026-06-22T02:37:07.4718086Z       "id": "REQ-INSTALL-12",
2026-06-22T02:37:07.4720754Z       "title": "Durable active-profile pointer for bind-time profile selection (ADR-0021): adapters/active-profiles.toml at the registry ROOT (sibling to the per-adapter <name>/ dirs, so adapter add/update/remove — which only rewrite a <name>/ subdir — can never clobber it), a flat host_binary → \"adapter[:profile]\" map. Read at bind as the PRIMARY profile selector; unset → the registered_at_ms fallback (REQ-START-5). Written ONLY by `spt adapter use <adapter>[:profile]` (resolves the adapter's host_binaries → sets each binary→adapter[:profile]); `spt adapter use --clear <adapter|binary>` drops. NEVER auto-written by install/update/adapter add (that is precisely what would let an update silently flip the active profile). A stale pointer (uninstalled adapter / deleted profile) self-heals: ignored, fall back, warn once. Pruned on adapter remove. Atomic write (spt_store atomic). (v0.9.0)",
2026-06-22T02:37:07.4720997Z       "requiredStages": [
2026-06-22T02:37:07.4721098Z         "doc",
2026-06-22T02:37:07.4721211Z         "impl",
2026-06-22T02:37:07.4721312Z         "unit",
2026-06-22T02:37:07.4721422Z         "int"
2026-06-22T02:37:07.4721526Z       ],
2026-06-22T02:37:07.4721626Z       "stages": {
2026-06-22T02:37:07.4721736Z         "doc": {
2026-06-22T02:37:07.4721851Z           "complete": true,
2026-06-22T02:37:07.4721965Z           "evidence": [
2026-06-22T02:37:07.4722070Z             {
2026-06-22T02:37:07.4722189Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4722295Z               "line": 185
2026-06-22T02:37:07.4722413Z             }
2026-06-22T02:37:07.4722518Z           ]
2026-06-22T02:37:07.4722620Z         },
2026-06-22T02:37:07.4722728Z         "impl": {
2026-06-22T02:37:07.4722838Z           "complete": true,
2026-06-22T02:37:07.4722953Z           "evidence": [
2026-06-22T02:37:07.4723057Z             {
2026-06-22T02:37:07.4723208Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4723323Z               "line": 27
2026-06-22T02:37:07.4723426Z             },
2026-06-22T02:37:07.4723525Z             {
2026-06-22T02:37:07.4723674Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4723778Z               "line": 223
2026-06-22T02:37:07.4723883Z             },
2026-06-22T02:37:07.4723989Z             {
2026-06-22T02:37:07.4724111Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4724218Z               "line": 5677
2026-06-22T02:37:07.4724318Z             }
2026-06-22T02:37:07.4724417Z           ]
2026-06-22T02:37:07.4724527Z         },
2026-06-22T02:37:07.4724632Z         "int": {
2026-06-22T02:37:07.4724741Z           "complete": true,
2026-06-22T02:37:07.4724852Z           "evidence": [
2026-06-22T02:37:07.4724952Z             {
2026-06-22T02:37:07.4725109Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:37:07.4725214Z               "line": 19
2026-06-22T02:37:07.4725318Z             }
2026-06-22T02:37:07.4725418Z           ]
2026-06-22T02:37:07.4725520Z         },
2026-06-22T02:37:07.4725624Z         "unit": {
2026-06-22T02:37:07.4725728Z           "complete": true,
2026-06-22T02:37:07.4725842Z           "evidence": [
2026-06-22T02:37:07.4725946Z             {
2026-06-22T02:37:07.4726096Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4726212Z               "line": 395
2026-06-22T02:37:07.4726321Z             },
2026-06-22T02:37:07.4726435Z             {
2026-06-22T02:37:07.4729825Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4729983Z               "line": 421
2026-06-22T02:37:07.4730101Z             },
2026-06-22T02:37:07.4730206Z             {
2026-06-22T02:37:07.4730369Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4730478Z               "line": 440
2026-06-22T02:37:07.4730593Z             },
2026-06-22T02:37:07.4730702Z             {
2026-06-22T02:37:07.4731001Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4731109Z               "line": 475
2026-06-22T02:37:07.4731218Z             },
2026-06-22T02:37:07.4731324Z             {
2026-06-22T02:37:07.4731452Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4731562Z               "line": 8665
2026-06-22T02:37:07.4731663Z             }
2026-06-22T02:37:07.4731767Z           ]
2026-06-22T02:37:07.4731872Z         }
2026-06-22T02:37:07.4731977Z       }
2026-06-22T02:37:07.4732076Z     },
2026-06-22T02:37:07.4732162Z     {
2026-06-22T02:37:07.4732278Z       "id": "REQ-INSTALL-2",
2026-06-22T02:37:07.4732439Z       "title": "Marketplace-repackaging-friendly install",
2026-06-22T02:37:07.4732659Z       "requiredStages": [
2026-06-22T02:37:07.4732791Z         "doc"
2026-06-22T02:37:07.4732898Z       ],
2026-06-22T02:37:07.4732997Z       "stages": {
2026-06-22T02:37:07.4733102Z         "doc": {
2026-06-22T02:37:07.4733208Z           "complete": true,
2026-06-22T02:37:07.4733321Z           "evidence": [
2026-06-22T02:37:07.4733431Z             {
2026-06-22T02:37:07.4733546Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4733655Z               "line": 755
2026-06-22T02:37:07.4733754Z             }
2026-06-22T02:37:07.4733854Z           ]
2026-06-22T02:37:07.4733957Z         },
2026-06-22T02:37:07.4734056Z         "impl": {
2026-06-22T02:37:07.4734167Z           "complete": false,
2026-06-22T02:37:07.4734277Z           "evidence": []
2026-06-22T02:37:07.4734385Z         },
2026-06-22T02:37:07.4734496Z         "int": {
2026-06-22T02:37:07.4734606Z           "complete": false,
2026-06-22T02:37:07.4734714Z           "evidence": []
2026-06-22T02:37:07.4734825Z         },
2026-06-22T02:37:07.4734935Z         "unit": {
2026-06-22T02:37:07.4735039Z           "complete": false,
2026-06-22T02:37:07.4735154Z           "evidence": []
2026-06-22T02:37:07.4735249Z         }
2026-06-22T02:37:07.4735354Z       }
2026-06-22T02:37:07.4735455Z     },
2026-06-22T02:37:07.4735563Z     {
2026-06-22T02:37:07.4735678Z       "id": "REQ-INSTALL-3",
2026-06-22T02:37:07.4735855Z       "title": "Idempotent + interactive-optional first run",
2026-06-22T02:37:07.4735974Z       "requiredStages": [
2026-06-22T02:37:07.4736075Z         "impl",
2026-06-22T02:37:07.4736184Z         "int"
2026-06-22T02:37:07.4736292Z       ],
2026-06-22T02:37:07.4736397Z       "stages": {
2026-06-22T02:37:07.4736510Z         "doc": {
2026-06-22T02:37:07.4736614Z           "complete": false,
2026-06-22T02:37:07.4736729Z           "evidence": []
2026-06-22T02:37:07.4736830Z         },
2026-06-22T02:37:07.4736948Z         "impl": {
2026-06-22T02:37:07.4737063Z           "complete": true,
2026-06-22T02:37:07.4737182Z           "evidence": [
2026-06-22T02:37:07.4737282Z             {
2026-06-22T02:37:07.4737411Z               "path": "installer/install.ps1",
2026-06-22T02:37:07.4737516Z               "line": 100
2026-06-22T02:37:07.4737611Z             },
2026-06-22T02:37:07.4737721Z             {
2026-06-22T02:37:07.4737849Z               "path": "installer/install.ps1",
2026-06-22T02:37:07.4737959Z               "line": 111
2026-06-22T02:37:07.4738069Z             },
2026-06-22T02:37:07.4738164Z             {
2026-06-22T02:37:07.4738299Z               "path": "installer/install.sh",
2026-06-22T02:37:07.4738407Z               "line": 79
2026-06-22T02:37:07.4738512Z             }
2026-06-22T02:37:07.4738623Z           ]
2026-06-22T02:37:07.4738722Z         },
2026-06-22T02:37:07.4738827Z         "int": {
2026-06-22T02:37:07.4738928Z           "complete": true,
2026-06-22T02:37:07.4739126Z           "evidence": [
2026-06-22T02:37:07.4739236Z             {
2026-06-22T02:37:07.4739385Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:37:07.4739503Z               "line": 167
2026-06-22T02:37:07.4739608Z             }
2026-06-22T02:37:07.4739714Z           ]
2026-06-22T02:37:07.4739817Z         },
2026-06-22T02:37:07.4739928Z         "unit": {
2026-06-22T02:37:07.4740028Z           "complete": false,
2026-06-22T02:37:07.4740243Z           "evidence": []
2026-06-22T02:37:07.4740333Z         }
2026-06-22T02:37:07.4740437Z       }
2026-06-22T02:37:07.4740533Z     },
2026-06-22T02:37:07.4740633Z     {
2026-06-22T02:37:07.4740752Z       "id": "REQ-INSTALL-4",
2026-06-22T02:37:07.4741400Z       "title": "Adapter registration lifecycle: spt adapter add (--github, manifest-first, install-is-first-update) + soft-deregister remove + optional manifest uninstall template; node-local registered-adapter set self-update ripples over",
2026-06-22T02:37:07.4741514Z       "requiredStages": [
2026-06-22T02:37:07.4741622Z         "impl",
2026-06-22T02:37:07.4741721Z         "unit"
2026-06-22T02:37:07.4741918Z       ],
2026-06-22T02:37:07.4742026Z       "stages": {
2026-06-22T02:37:07.4742136Z         "doc": {
2026-06-22T02:37:07.4742251Z           "complete": false,
2026-06-22T02:37:07.4742355Z           "evidence": []
2026-06-22T02:37:07.4742451Z         },
2026-06-22T02:37:07.4742556Z         "impl": {
2026-06-22T02:37:07.4742675Z           "complete": true,
2026-06-22T02:37:07.4742786Z           "evidence": [
2026-06-22T02:37:07.4742890Z             {
2026-06-22T02:37:07.4743042Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.4743148Z               "line": 165
2026-06-22T02:37:07.4743248Z             },
2026-06-22T02:37:07.4743338Z             {
2026-06-22T02:37:07.4743491Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4743600Z               "line": 29
2026-06-22T02:37:07.4743706Z             },
2026-06-22T02:37:07.4743815Z             {
2026-06-22T02:37:07.4743958Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4744079Z               "line": 288
2026-06-22T02:37:07.4744177Z             },
2026-06-22T02:37:07.4744281Z             {
2026-06-22T02:37:07.4744424Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4744531Z               "line": 356
2026-06-22T02:37:07.4744631Z             },
2026-06-22T02:37:07.4744737Z             {
2026-06-22T02:37:07.4744884Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4744989Z               "line": 386
2026-06-22T02:37:07.4745095Z             },
2026-06-22T02:37:07.4745194Z             {
2026-06-22T02:37:07.4745338Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4745447Z               "line": 434
2026-06-22T02:37:07.4745542Z             },
2026-06-22T02:37:07.4745652Z             {
2026-06-22T02:37:07.4745771Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4745881Z               "line": 5396
2026-06-22T02:37:07.4745987Z             }
2026-06-22T02:37:07.4746100Z           ]
2026-06-22T02:37:07.4746205Z         },
2026-06-22T02:37:07.4746311Z         "int": {
2026-06-22T02:37:07.4746415Z           "complete": false,
2026-06-22T02:37:07.4746525Z           "evidence": []
2026-06-22T02:37:07.4746631Z         },
2026-06-22T02:37:07.4746739Z         "unit": {
2026-06-22T02:37:07.4746857Z           "complete": true,
2026-06-22T02:37:07.4746962Z           "evidence": [
2026-06-22T02:37:07.4747066Z             {
2026-06-22T02:37:07.4747226Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.4747333Z               "line": 375
2026-06-22T02:37:07.4747442Z             },
2026-06-22T02:37:07.4747541Z             {
2026-06-22T02:37:07.4747680Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4747798Z               "line": 808
2026-06-22T02:37:07.4747895Z             },
2026-06-22T02:37:07.4747995Z             {
2026-06-22T02:37:07.4748137Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4748248Z               "line": 849
2026-06-22T02:37:07.4748352Z             },
2026-06-22T02:37:07.4748457Z             {
2026-06-22T02:37:07.4748601Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4748705Z               "line": 869
2026-06-22T02:37:07.4748805Z             },
2026-06-22T02:37:07.4749067Z             {
2026-06-22T02:37:07.4749197Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4749310Z               "line": 8403
2026-06-22T02:37:07.4749401Z             }
2026-06-22T02:37:07.4749507Z           ]
2026-06-22T02:37:07.4749611Z         }
2026-06-22T02:37:07.4749715Z       }
2026-06-22T02:37:07.4749815Z     },
2026-06-22T02:37:07.4749916Z     {
2026-06-22T02:37:07.4750024Z       "id": "REQ-INSTALL-5",
2026-06-22T02:37:07.4750536Z       "title": "Non-interactive install path: the canonical one-liner doubles as every adapter's pack-in on-demand install (no second mechanism); sha256-verified fetch; user-PATH registration",
2026-06-22T02:37:07.4750754Z       "requiredStages": [
2026-06-22T02:37:07.4750846Z         "impl",
2026-06-22T02:37:07.4750950Z         "int"
2026-06-22T02:37:07.4751040Z       ],
2026-06-22T02:37:07.4751147Z       "stages": {
2026-06-22T02:37:07.4751255Z         "doc": {
2026-06-22T02:37:07.4751360Z           "complete": false,
2026-06-22T02:37:07.4751471Z           "evidence": []
2026-06-22T02:37:07.4751569Z         },
2026-06-22T02:37:07.4751680Z         "impl": {
2026-06-22T02:37:07.4751786Z           "complete": true,
2026-06-22T02:37:07.4751898Z           "evidence": [
2026-06-22T02:37:07.4751997Z             {
2026-06-22T02:37:07.4752127Z               "path": "installer/install.ps1",
2026-06-22T02:37:07.4752224Z               "line": 5
2026-06-22T02:37:07.4752324Z             },
2026-06-22T02:37:07.4752415Z             {
2026-06-22T02:37:07.4752544Z               "path": "installer/install.sh",
2026-06-22T02:37:07.4752658Z               "line": 6
2026-06-22T02:37:07.4752759Z             }
2026-06-22T02:37:07.4752863Z           ]
2026-06-22T02:37:07.4752972Z         },
2026-06-22T02:37:07.4753074Z         "int": {
2026-06-22T02:37:07.4753183Z           "complete": true,
2026-06-22T02:37:07.4753292Z           "evidence": [
2026-06-22T02:37:07.4753398Z             {
2026-06-22T02:37:07.4753549Z               "path": "crates/spt/tests/oneliner_e2e.rs",
2026-06-22T02:37:07.4753655Z               "line": 22
2026-06-22T02:37:07.4753755Z             }
2026-06-22T02:37:07.4753855Z           ]
2026-06-22T02:37:07.4753951Z         },
2026-06-22T02:37:07.4754056Z         "unit": {
2026-06-22T02:37:07.4754165Z           "complete": false,
2026-06-22T02:37:07.4754281Z           "evidence": []
2026-06-22T02:37:07.4754380Z         }
2026-06-22T02:37:07.4754484Z       }
2026-06-22T02:37:07.4754586Z     },
2026-06-22T02:37:07.4754686Z     {
2026-06-22T02:37:07.4754794Z       "id": "REQ-INSTALL-6",
2026-06-22T02:37:07.4756036Z       "title": "Linux elevation install leg: install.sh symlinks the binary into a sudo-reachable path (/usr/local/bin; graceful print-the-one-liner when unelevated) so sudo spt resolves; first sudo spt detects elevation and prompts ONCE for the default user account — thereafter any elevated daemon launch runs daemon + state under that account, never root (KH 5.7 interplay verified) (M8 decision 8)",
2026-06-22T02:37:07.4756169Z       "requiredStages": [
2026-06-22T02:37:07.4756279Z         "impl",
2026-06-22T02:37:07.4756389Z         "unit"
2026-06-22T02:37:07.4756484Z       ],
2026-06-22T02:37:07.4756599Z       "stages": {
2026-06-22T02:37:07.4756708Z         "doc": {
2026-06-22T02:37:07.4756823Z           "complete": false,
2026-06-22T02:37:07.4756942Z           "evidence": []
2026-06-22T02:37:07.4757032Z         },
2026-06-22T02:37:07.4757138Z         "impl": {
2026-06-22T02:37:07.4757247Z           "complete": true,
2026-06-22T02:37:07.4757361Z           "evidence": [
2026-06-22T02:37:07.4757465Z             {
2026-06-22T02:37:07.4757607Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4757724Z               "line": 61
2026-06-22T02:37:07.4757820Z             },
2026-06-22T02:37:07.4757931Z             {
2026-06-22T02:37:07.4758063Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.4758164Z               "line": 641
2026-06-22T02:37:07.4758269Z             },
2026-06-22T02:37:07.4758470Z             {
2026-06-22T02:37:07.4758617Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.4758726Z               "line": 191
2026-06-22T02:37:07.4758822Z             },
2026-06-22T02:37:07.4758926Z             {
2026-06-22T02:37:07.4759156Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.4759265Z               "line": 276
2026-06-22T02:37:07.4759370Z             },
2026-06-22T02:37:07.4759481Z             {
2026-06-22T02:37:07.4759609Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:37:07.4759714Z               "line": 43
2026-06-22T02:37:07.4759814Z             },
2026-06-22T02:37:07.4760010Z             {
2026-06-22T02:37:07.4760143Z               "path": "installer/install.sh",
2026-06-22T02:37:07.4760251Z               "line": 104
2026-06-22T02:37:07.4760356Z             }
2026-06-22T02:37:07.4760462Z           ]
2026-06-22T02:37:07.4760557Z         },
2026-06-22T02:37:07.4760656Z         "int": {
2026-06-22T02:37:07.4760781Z           "complete": false,
2026-06-22T02:37:07.4760895Z           "evidence": []
2026-06-22T02:37:07.4760990Z         },
2026-06-22T02:37:07.4761101Z         "unit": {
2026-06-22T02:37:07.4761210Z           "complete": true,
2026-06-22T02:37:07.4761324Z           "evidence": [
2026-06-22T02:37:07.4761425Z             {
2026-06-22T02:37:07.4761571Z               "path": "crates/spt-daemon/src/deelevate.rs",
2026-06-22T02:37:07.4761677Z               "line": 894
2026-06-22T02:37:07.4761768Z             }
2026-06-22T02:37:07.4761872Z           ]
2026-06-22T02:37:07.4761974Z         }
2026-06-22T02:37:07.4762078Z       }
2026-06-22T02:37:07.4762178Z     },
2026-06-22T02:37:07.4762288Z     {
2026-06-22T02:37:07.4762411Z       "id": "REQ-INSTALL-7",
2026-06-22T02:37:07.4763542Z       "title": "Windows inbound reachability: the elevated install leg registers the inbound-UDP firewall rule (New-NetFirewallRule); the daemon self-detects blocked inbound and renders it as the no-connection state in subnet status + the coming-online banner (covers user-scope installs that skip the elevated leg — never a silent NO_SEED_HOLDER dead-end) (M8 root cause 3)",
2026-06-22T02:37:07.4763671Z       "requiredStages": [
2026-06-22T02:37:07.4763766Z         "impl"
2026-06-22T02:37:07.4763872Z       ],
2026-06-22T02:37:07.4763982Z       "stages": {
2026-06-22T02:37:07.4764077Z         "doc": {
2026-06-22T02:37:07.4764191Z           "complete": false,
2026-06-22T02:37:07.4764301Z           "evidence": []
2026-06-22T02:37:07.4764401Z         },
2026-06-22T02:37:07.4764506Z         "impl": {
2026-06-22T02:37:07.4764616Z           "complete": true,
2026-06-22T02:37:07.4764725Z           "evidence": [
2026-06-22T02:37:07.4764836Z             {
2026-06-22T02:37:07.4764959Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4765068Z               "line": 3920
2026-06-22T02:37:07.4765170Z             },
2026-06-22T02:37:07.4765269Z             {
2026-06-22T02:37:07.4765401Z               "path": "installer/install.ps1",
2026-06-22T02:37:07.4765516Z               "line": 157
2026-06-22T02:37:07.4765619Z             }
2026-06-22T02:37:07.4765728Z           ]
2026-06-22T02:37:07.4765818Z         },
2026-06-22T02:37:07.4765924Z         "int": {
2026-06-22T02:37:07.4766042Z           "complete": false,
2026-06-22T02:37:07.4766158Z           "evidence": []
2026-06-22T02:37:07.4766263Z         },
2026-06-22T02:37:07.4766362Z         "unit": {
2026-06-22T02:37:07.4766482Z           "complete": false,
2026-06-22T02:37:07.4766592Z           "evidence": []
2026-06-22T02:37:07.4766696Z         }
2026-06-22T02:37:07.4766792Z       }
2026-06-22T02:37:07.4766896Z     },
2026-06-22T02:37:07.4767006Z     {
2026-06-22T02:37:07.4767112Z       "id": "REQ-INSTALL-8",
2026-06-22T02:37:07.4768190Z       "title": "OS-service registration (REQ-INSTALL-1's deferred third leg): Linux systemd USER service + loginctl enable-linger (linger rides the elevated install leg; daemon starts at boot pre-login, user universe per KH 5.7, systemctl --user managed); Windows scheduled task at-logon (interactive session, no stored credentials); a node is reachable after reboot without any manual spt invocation (M8 decision 17)",
2026-06-22T02:37:07.4768414Z       "requiredStages": [
2026-06-22T02:37:07.4768515Z         "impl"
2026-06-22T02:37:07.4768623Z       ],
2026-06-22T02:37:07.4768725Z       "stages": {
2026-06-22T02:37:07.4768839Z         "doc": {
2026-06-22T02:37:07.4769020Z           "complete": false,
2026-06-22T02:37:07.4769134Z           "evidence": []
2026-06-22T02:37:07.4769229Z         },
2026-06-22T02:37:07.4769335Z         "impl": {
2026-06-22T02:37:07.4769439Z           "complete": true,
2026-06-22T02:37:07.4769548Z           "evidence": [
2026-06-22T02:37:07.4769759Z             {
2026-06-22T02:37:07.4769892Z               "path": "installer/install.ps1",
2026-06-22T02:37:07.4769998Z               "line": 184
2026-06-22T02:37:07.4770102Z             },
2026-06-22T02:37:07.4770207Z             {
2026-06-22T02:37:07.4770337Z               "path": "installer/install.sh",
2026-06-22T02:37:07.4770450Z               "line": 121
2026-06-22T02:37:07.4770550Z             }
2026-06-22T02:37:07.4770652Z           ]
2026-06-22T02:37:07.4770755Z         },
2026-06-22T02:37:07.4770858Z         "int": {
2026-06-22T02:37:07.4770983Z           "complete": false,
2026-06-22T02:37:07.4771098Z           "evidence": []
2026-06-22T02:37:07.4771202Z         },
2026-06-22T02:37:07.4771308Z         "unit": {
2026-06-22T02:37:07.4771431Z           "complete": false,
2026-06-22T02:37:07.4771541Z           "evidence": []
2026-06-22T02:37:07.4771647Z         }
2026-06-22T02:37:07.4771756Z       }
2026-06-22T02:37:07.4771865Z     },
2026-06-22T02:37:07.4771975Z     {
2026-06-22T02:37:07.4772085Z       "id": "REQ-INSTALL-9",
2026-06-22T02:37:07.4773308Z       "title": "Adapter add from a GitHub release archive: `spt adapter add --release <user/repo> [--tag <tag>] [--asset <name>]` fetches a `.spt` tar asset over HTTPS+GitHub trust, extracts it to the durable adapters/_github home, and registers the root — ships built binaries source-free and versioned (the distribution path for an adapter whose dev repo is a monorepo subdir, where --github root-only clone does not fit)",
2026-06-22T02:37:07.4773430Z       "requiredStages": [
2026-06-22T02:37:07.4773535Z         "doc",
2026-06-22T02:37:07.4773637Z         "impl",
2026-06-22T02:37:07.4773745Z         "unit"
2026-06-22T02:37:07.4773845Z       ],
2026-06-22T02:37:07.4773951Z       "stages": {
2026-06-22T02:37:07.4774055Z         "doc": {
2026-06-22T02:37:07.4774166Z           "complete": true,
2026-06-22T02:37:07.4774275Z           "evidence": [
2026-06-22T02:37:07.4774379Z             {
2026-06-22T02:37:07.4774504Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4774614Z               "line": 771
2026-06-22T02:37:07.4774718Z             }
2026-06-22T02:37:07.4774819Z           ]
2026-06-22T02:37:07.4774933Z         },
2026-06-22T02:37:07.4775037Z         "impl": {
2026-06-22T02:37:07.4775143Z           "complete": true,
2026-06-22T02:37:07.4775266Z           "evidence": [
2026-06-22T02:37:07.4775362Z             {
2026-06-22T02:37:07.4775492Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4775600Z               "line": 2535
2026-06-22T02:37:07.4775711Z             },
2026-06-22T02:37:07.4775821Z             {
2026-06-22T02:37:07.4775952Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4776061Z               "line": 2559
2026-06-22T02:37:07.4776161Z             }
2026-06-22T02:37:07.4776269Z           ]
2026-06-22T02:37:07.4776365Z         },
2026-06-22T02:37:07.4776479Z         "int": {
2026-06-22T02:37:07.4776602Z           "complete": false,
2026-06-22T02:37:07.4776718Z           "evidence": []
2026-06-22T02:37:07.4776823Z         },
2026-06-22T02:37:07.4776931Z         "unit": {
2026-06-22T02:37:07.4777047Z           "complete": true,
2026-06-22T02:37:07.4777157Z           "evidence": [
2026-06-22T02:37:07.4777260Z             {
2026-06-22T02:37:07.4777386Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4777595Z               "line": 7591
2026-06-22T02:37:07.4777701Z             },
2026-06-22T02:37:07.4777799Z             {
2026-06-22T02:37:07.4777928Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4778039Z               "line": 8433
2026-06-22T02:37:07.4778147Z             }
2026-06-22T02:37:07.4778253Z           ]
2026-06-22T02:37:07.4778359Z         }
2026-06-22T02:37:07.4778462Z       }
2026-06-22T02:37:07.4778561Z     },
2026-06-22T02:37:07.4778667Z     {
2026-06-22T02:37:07.4778774Z       "id": "REQ-KICK-1",
2026-06-22T02:37:07.4781319Z       "title": "Explicit, loud controller displacement: `spt rc kick <target>` / `--take` (Take intent) kicks the incumbent controller and becomes controller; the displaced controller receives a LOUD `Displaced{by}` notice and is FULLY DETACHED (not demoted to a viewer). A default attach to a controlled endpoint is NEVER a silent displace (it is the Control busy-refusal). An old (N-1) rc omits intent → Control, so it can drive a free endpoint but CANNOT `--take` — it can never silently steal, and gets a clean busy-refusal instead. Taking control rides the same access_check(endpoint, origin, Unsolicited) as a normal control attach (if you may drive, you may take — no elevated kick policy). The picker surfaces 'Kick <node> and attach' (Take) only on a controlled (blue ■) endpoint, via the existing attach dispatch (single-bringup-path: intent is a parameter).",
2026-06-22T02:37:07.4781592Z       "requiredStages": [
2026-06-22T02:37:07.4781700Z         "doc",
2026-06-22T02:37:07.4781805Z         "impl",
2026-06-22T02:37:07.4781911Z         "unit",
2026-06-22T02:37:07.4782015Z         "int"
2026-06-22T02:37:07.4782120Z       ],
2026-06-22T02:37:07.4782230Z       "stages": {
2026-06-22T02:37:07.4782339Z         "doc": {
2026-06-22T02:37:07.4782449Z           "complete": true,
2026-06-22T02:37:07.4782554Z           "evidence": [
2026-06-22T02:37:07.4782659Z             {
2026-06-22T02:37:07.4782769Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4782893Z               "line": 342
2026-06-22T02:37:07.4782998Z             }
2026-06-22T02:37:07.4783094Z           ]
2026-06-22T02:37:07.4783203Z         },
2026-06-22T02:37:07.4783303Z         "impl": {
2026-06-22T02:37:07.4783413Z           "complete": true,
2026-06-22T02:37:07.4783523Z           "evidence": [
2026-06-22T02:37:07.4783630Z             {
2026-06-22T02:37:07.4783783Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.4783891Z               "line": 41
2026-06-22T02:37:07.4783995Z             },
2026-06-22T02:37:07.4784100Z             {
2026-06-22T02:37:07.4784220Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.4784334Z               "line": 701
2026-06-22T02:37:07.4784440Z             }
2026-06-22T02:37:07.4784539Z           ]
2026-06-22T02:37:07.4784648Z         },
2026-06-22T02:37:07.4784754Z         "int": {
2026-06-22T02:37:07.4784863Z           "complete": true,
2026-06-22T02:37:07.4784973Z           "evidence": [
2026-06-22T02:37:07.4785083Z             {
2026-06-22T02:37:07.4785239Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.4785346Z               "line": 916
2026-06-22T02:37:07.4785455Z             }
2026-06-22T02:37:07.4785559Z           ]
2026-06-22T02:37:07.4785661Z         },
2026-06-22T02:37:07.4785760Z         "unit": {
2026-06-22T02:37:07.4785869Z           "complete": true,
2026-06-22T02:37:07.4785985Z           "evidence": [
2026-06-22T02:37:07.4786084Z             {
2026-06-22T02:37:07.4786232Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.4786343Z               "line": 205
2026-06-22T02:37:07.4786441Z             }
2026-06-22T02:37:07.4786545Z           ]
2026-06-22T02:37:07.4786645Z         }
2026-06-22T02:37:07.4786749Z       }
2026-06-22T02:37:07.4786848Z     },
2026-06-22T02:37:07.4786958Z     {
2026-06-22T02:37:07.4787078Z       "id": "REQ-MANIFEST-1",
2026-06-22T02:37:07.4787293Z       "title": "Per-adapter manifest with adapter_name and min_spt_core_version",
2026-06-22T02:37:07.4787515Z       "requiredStages": [
2026-06-22T02:37:07.4787622Z         "doc",
2026-06-22T02:37:07.4787727Z         "impl",
2026-06-22T02:37:07.4787830Z         "unit"
2026-06-22T02:37:07.4787936Z       ],
2026-06-22T02:37:07.4788040Z       "stages": {
2026-06-22T02:37:07.4788135Z         "doc": {
2026-06-22T02:37:07.4788261Z           "complete": true,
2026-06-22T02:37:07.4788359Z           "evidence": [
2026-06-22T02:37:07.4788465Z             {
2026-06-22T02:37:07.4788585Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.4788693Z               "line": 19
2026-06-22T02:37:07.4788799Z             }
2026-06-22T02:37:07.4789060Z           ]
2026-06-22T02:37:07.4789165Z         },
2026-06-22T02:37:07.4789269Z         "impl": {
2026-06-22T02:37:07.4789391Z           "complete": true,
2026-06-22T02:37:07.4789487Z           "evidence": [
2026-06-22T02:37:07.4789592Z             {
2026-06-22T02:37:07.4789744Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4789860Z               "line": 18
2026-06-22T02:37:07.4789959Z             }
2026-06-22T02:37:07.4790063Z           ]
2026-06-22T02:37:07.4790169Z         },
2026-06-22T02:37:07.4790274Z         "int": {
2026-06-22T02:37:07.4790392Z           "complete": false,
2026-06-22T02:37:07.4790508Z           "evidence": []
2026-06-22T02:37:07.4790607Z         },
2026-06-22T02:37:07.4790707Z         "unit": {
2026-06-22T02:37:07.4790823Z           "complete": true,
2026-06-22T02:37:07.4790927Z           "evidence": [
2026-06-22T02:37:07.4791027Z             {
2026-06-22T02:37:07.4791170Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4791284Z               "line": 1029
2026-06-22T02:37:07.4791390Z             },
2026-06-22T02:37:07.4791490Z             {
2026-06-22T02:37:07.4791637Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4791748Z               "line": 1325
2026-06-22T02:37:07.4791851Z             },
2026-06-22T02:37:07.4791965Z             {
2026-06-22T02:37:07.4792108Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4792218Z               "line": 1337
2026-06-22T02:37:07.4792317Z             },
2026-06-22T02:37:07.4792419Z             {
2026-06-22T02:37:07.4792556Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4792661Z               "line": 1348
2026-06-22T02:37:07.4792767Z             },
2026-06-22T02:37:07.4792876Z             {
2026-06-22T02:37:07.4793019Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4793129Z               "line": 1365
2026-06-22T02:37:07.4793233Z             },
2026-06-22T02:37:07.4793344Z             {
2026-06-22T02:37:07.4793486Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4793600Z               "line": 1379
2026-06-22T02:37:07.4793702Z             },
2026-06-22T02:37:07.4793805Z             {
2026-06-22T02:37:07.4793954Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4794068Z               "line": 1495
2026-06-22T02:37:07.4794172Z             },
2026-06-22T02:37:07.4794271Z             {
2026-06-22T02:37:07.4794423Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4794531Z               "line": 1510
2026-06-22T02:37:07.4794637Z             },
2026-06-22T02:37:07.4794743Z             {
2026-06-22T02:37:07.4794874Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4794975Z               "line": 1621
2026-06-22T02:37:07.4795080Z             },
2026-06-22T02:37:07.4795189Z             {
2026-06-22T02:37:07.4795338Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4795442Z               "line": 1632
2026-06-22T02:37:07.4795552Z             }
2026-06-22T02:37:07.4795657Z           ]
2026-06-22T02:37:07.4795762Z         }
2026-06-22T02:37:07.4795862Z       }
2026-06-22T02:37:07.4795958Z     },
2026-06-22T02:37:07.4796063Z     {
2026-06-22T02:37:07.4796177Z       "id": "REQ-MANIFEST-2",
2026-06-22T02:37:07.4796807Z       "title": "Adapter profiles — sparse leaf-replace overlays (shipped + local), composite <adapter>:<profile> addressing, shadow-refusal, tighten-only consent floors",
2026-06-22T02:37:07.4796917Z       "requiredStages": [
2026-06-22T02:37:07.4797025Z         "doc",
2026-06-22T02:37:07.4797129Z         "impl",
2026-06-22T02:37:07.4797234Z         "unit"
2026-06-22T02:37:07.4797332Z       ],
2026-06-22T02:37:07.4797432Z       "stages": {
2026-06-22T02:37:07.4797537Z         "doc": {
2026-06-22T02:37:07.4797647Z           "complete": true,
2026-06-22T02:37:07.4797761Z           "evidence": [
2026-06-22T02:37:07.4797976Z             {
2026-06-22T02:37:07.4798099Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4798206Z               "line": 75
2026-06-22T02:37:07.4798305Z             }
2026-06-22T02:37:07.4798410Z           ]
2026-06-22T02:37:07.4798511Z         },
2026-06-22T02:37:07.4798620Z         "impl": {
2026-06-22T02:37:07.4798734Z           "complete": true,
2026-06-22T02:37:07.4798849Z           "evidence": [
2026-06-22T02:37:07.4799030Z             {
2026-06-22T02:37:07.4799183Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4799292Z               "line": 82
2026-06-22T02:37:07.4799398Z             },
2026-06-22T02:37:07.4799498Z             {
2026-06-22T02:37:07.4799653Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4799763Z               "line": 15
2026-06-22T02:37:07.4799866Z             },
2026-06-22T02:37:07.4799965Z             {
2026-06-22T02:37:07.4800109Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4800228Z               "line": 65
2026-06-22T02:37:07.4800327Z             },
2026-06-22T02:37:07.4800434Z             {
2026-06-22T02:37:07.4800571Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4800671Z               "line": 83
2026-06-22T02:37:07.4800777Z             },
2026-06-22T02:37:07.4800885Z             {
2026-06-22T02:37:07.4801030Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4801138Z               "line": 183
2026-06-22T02:37:07.4801238Z             },
2026-06-22T02:37:07.4801339Z             {
2026-06-22T02:37:07.4801482Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4801592Z               "line": 527
2026-06-22T02:37:07.4801693Z             },
2026-06-22T02:37:07.4801791Z             {
2026-06-22T02:37:07.4801940Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4802055Z               "line": 553
2026-06-22T02:37:07.4802159Z             },
2026-06-22T02:37:07.4802275Z             {
2026-06-22T02:37:07.4802412Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4802511Z               "line": 671
2026-06-22T02:37:07.4802615Z             },
2026-06-22T02:37:07.4802727Z             {
2026-06-22T02:37:07.4802873Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4802988Z               "line": 696
2026-06-22T02:37:07.4803097Z             },
2026-06-22T02:37:07.4803197Z             {
2026-06-22T02:37:07.4803350Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4803454Z               "line": 719
2026-06-22T02:37:07.4803565Z             },
2026-06-22T02:37:07.4803670Z             {
2026-06-22T02:37:07.4803807Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4803914Z               "line": 734
2026-06-22T02:37:07.4804013Z             },
2026-06-22T02:37:07.4804118Z             {
2026-06-22T02:37:07.4804243Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4804360Z               "line": 5567
2026-06-22T02:37:07.4804466Z             },
2026-06-22T02:37:07.4804568Z             {
2026-06-22T02:37:07.4804704Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4804812Z               "line": 5581
2026-06-22T02:37:07.4804908Z             },
2026-06-22T02:37:07.4805115Z             {
2026-06-22T02:37:07.4805235Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4805345Z               "line": 5615
2026-06-22T02:37:07.4805444Z             }
2026-06-22T02:37:07.4805550Z           ]
2026-06-22T02:37:07.4805654Z         },
2026-06-22T02:37:07.4805793Z         "int": {
2026-06-22T02:37:07.4805960Z           "complete": false,
2026-06-22T02:37:07.4806127Z           "evidence": []
2026-06-22T02:37:07.4806237Z         },
2026-06-22T02:37:07.4806346Z         "unit": {
2026-06-22T02:37:07.4806466Z           "complete": true,
2026-06-22T02:37:07.4806570Z           "evidence": [
2026-06-22T02:37:07.4806675Z             {
2026-06-22T02:37:07.4806946Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.4807062Z               "line": 921
2026-06-22T02:37:07.4807167Z             },
2026-06-22T02:37:07.4807270Z             {
2026-06-22T02:37:07.4807420Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4807529Z               "line": 211
2026-06-22T02:37:07.4807642Z             },
2026-06-22T02:37:07.4807732Z             {
2026-06-22T02:37:07.4807869Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4807982Z               "line": 272
2026-06-22T02:37:07.4808083Z             },
2026-06-22T02:37:07.4808189Z             {
2026-06-22T02:37:07.4808326Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4808437Z               "line": 313
2026-06-22T02:37:07.4808541Z             },
2026-06-22T02:37:07.4808640Z             {
2026-06-22T02:37:07.4808784Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4808908Z               "line": 325
2026-06-22T02:37:07.4809090Z             },
2026-06-22T02:37:07.4809194Z             {
2026-06-22T02:37:07.4809328Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4809442Z               "line": 336
2026-06-22T02:37:07.4809542Z             },
2026-06-22T02:37:07.4809648Z             {
2026-06-22T02:37:07.4809785Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4809895Z               "line": 345
2026-06-22T02:37:07.4810001Z             },
2026-06-22T02:37:07.4810105Z             {
2026-06-22T02:37:07.4810251Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4810361Z               "line": 361
2026-06-22T02:37:07.4810464Z             },
2026-06-22T02:37:07.4810564Z             {
2026-06-22T02:37:07.4810707Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4810811Z               "line": 444
2026-06-22T02:37:07.4810916Z             },
2026-06-22T02:37:07.4811027Z             {
2026-06-22T02:37:07.4811174Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4811289Z               "line": 958
2026-06-22T02:37:07.4811384Z             },
2026-06-22T02:37:07.4811488Z             {
2026-06-22T02:37:07.4811623Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4811732Z               "line": 982
2026-06-22T02:37:07.4811842Z             },
2026-06-22T02:37:07.4811948Z             {
2026-06-22T02:37:07.4812085Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4812195Z               "line": 1008
2026-06-22T02:37:07.4812300Z             },
2026-06-22T02:37:07.4812405Z             {
2026-06-22T02:37:07.4815311Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4815464Z               "line": 1027
2026-06-22T02:37:07.4815562Z             },
2026-06-22T02:37:07.4815661Z             {
2026-06-22T02:37:07.4815824Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4815962Z               "line": 1058
2026-06-22T02:37:07.4816072Z             },
2026-06-22T02:37:07.4816172Z             {
2026-06-22T02:37:07.4816333Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.4816434Z               "line": 309
2026-06-22T02:37:07.4816539Z             },
2026-06-22T02:37:07.4816773Z             {
2026-06-22T02:37:07.4816920Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.4817026Z               "line": 606
2026-06-22T02:37:07.4817135Z             },
2026-06-22T02:37:07.4817245Z             {
2026-06-22T02:37:07.4817370Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4817478Z               "line": 8610
2026-06-22T02:37:07.4817578Z             },
2026-06-22T02:37:07.4817680Z             {
2026-06-22T02:37:07.4817831Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4817947Z               "line": 9558
2026-06-22T02:37:07.4818056Z             }
2026-06-22T02:37:07.4818169Z           ]
2026-06-22T02:37:07.4818392Z         }
2026-06-22T02:37:07.4818491Z       }
2026-06-22T02:37:07.4818595Z     },
2026-06-22T02:37:07.4818696Z     {
2026-06-22T02:37:07.4818805Z       "id": "REQ-MANIFEST-3",
2026-06-22T02:37:07.4819583Z       "title": "Adapter strings — [strings] KV tree, dot-path get-string resolving through the profile leaf-replace overlay, set-string editing a local profile's [strings] only; data-only (nothing executes a string)",
2026-06-22T02:37:07.4819711Z       "requiredStages": [
2026-06-22T02:37:07.4819830Z         "doc",
2026-06-22T02:37:07.4819931Z         "impl",
2026-06-22T02:37:07.4820040Z         "unit"
2026-06-22T02:37:07.4820145Z       ],
2026-06-22T02:37:07.4820242Z       "stages": {
2026-06-22T02:37:07.4820350Z         "doc": {
2026-06-22T02:37:07.4820459Z           "complete": true,
2026-06-22T02:37:07.4820566Z           "evidence": [
2026-06-22T02:37:07.4820665Z             {
2026-06-22T02:37:07.4820787Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4820902Z               "line": 81
2026-06-22T02:37:07.4821001Z             }
2026-06-22T02:37:07.4821104Z           ]
2026-06-22T02:37:07.4821205Z         },
2026-06-22T02:37:07.4821311Z         "impl": {
2026-06-22T02:37:07.4821424Z           "complete": true,
2026-06-22T02:37:07.4821535Z           "evidence": [
2026-06-22T02:37:07.4821640Z             {
2026-06-22T02:37:07.4821796Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4821907Z               "line": 92
2026-06-22T02:37:07.4822011Z             },
2026-06-22T02:37:07.4822111Z             {
2026-06-22T02:37:07.4822254Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4822358Z               "line": 101
2026-06-22T02:37:07.4822470Z             },
2026-06-22T02:37:07.4822569Z             {
2026-06-22T02:37:07.4822717Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4822813Z               "line": 132
2026-06-22T02:37:07.4822921Z             },
2026-06-22T02:37:07.4823031Z             {
2026-06-22T02:37:07.4823189Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4823299Z               "line": 577
2026-06-22T02:37:07.4823400Z             },
2026-06-22T02:37:07.4823490Z             {
2026-06-22T02:37:07.4823626Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4823746Z               "line": 633
2026-06-22T02:37:07.4823852Z             },
2026-06-22T02:37:07.4823950Z             {
2026-06-22T02:37:07.4824079Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4824185Z               "line": 5628
2026-06-22T02:37:07.4824293Z             },
2026-06-22T02:37:07.4824395Z             {
2026-06-22T02:37:07.4824519Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4824637Z               "line": 5654
2026-06-22T02:37:07.4824733Z             }
2026-06-22T02:37:07.4824837Z           ]
2026-06-22T02:37:07.4824937Z         },
2026-06-22T02:37:07.4825039Z         "int": {
2026-06-22T02:37:07.4825161Z           "complete": false,
2026-06-22T02:37:07.4825271Z           "evidence": []
2026-06-22T02:37:07.4825377Z         },
2026-06-22T02:37:07.4825480Z         "unit": {
2026-06-22T02:37:07.4825596Z           "complete": true,
2026-06-22T02:37:07.4825707Z           "evidence": [
2026-06-22T02:37:07.4825814Z             {
2026-06-22T02:37:07.4826071Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4826174Z               "line": 371
2026-06-22T02:37:07.4826284Z             },
2026-06-22T02:37:07.4826384Z             {
2026-06-22T02:37:07.4826531Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4826646Z               "line": 429
2026-06-22T02:37:07.4826752Z             },
2026-06-22T02:37:07.4826851Z             {
2026-06-22T02:37:07.4826999Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4827113Z               "line": 1082
2026-06-22T02:37:07.4827213Z             },
2026-06-22T02:37:07.4827319Z             {
2026-06-22T02:37:07.4827537Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4827653Z               "line": 8703
2026-06-22T02:37:07.4827747Z             }
2026-06-22T02:37:07.4827852Z           ]
2026-06-22T02:37:07.4827958Z         }
2026-06-22T02:37:07.4828052Z       }
2026-06-22T02:37:07.4828153Z     },
2026-06-22T02:37:07.4828259Z     {
2026-06-22T02:37:07.4828372Z       "id": "REQ-MANIFEST-4",
2026-06-22T02:37:07.4829165Z       "title": "Keyword hints — [[hints]] {keywords (literal/regex), text}; spt api hint --session emits at most one matched hint per message, once per session (seen-set), declaration-order first match; profiles overlay [[hints]] by leaf-replace",
2026-06-22T02:37:07.4829285Z       "requiredStages": [
2026-06-22T02:37:07.4829384Z         "doc",
2026-06-22T02:37:07.4829494Z         "impl",
2026-06-22T02:37:07.4829604Z         "unit"
2026-06-22T02:37:07.4829699Z       ],
2026-06-22T02:37:07.4829804Z       "stages": {
2026-06-22T02:37:07.4829909Z         "doc": {
2026-06-22T02:37:07.4830033Z           "complete": true,
2026-06-22T02:37:07.4830133Z           "evidence": [
2026-06-22T02:37:07.4830233Z             {
2026-06-22T02:37:07.4830352Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4830458Z               "line": 88
2026-06-22T02:37:07.4830562Z             }
2026-06-22T02:37:07.4830667Z           ]
2026-06-22T02:37:07.4830773Z         },
2026-06-22T02:37:07.4830882Z         "impl": {
2026-06-22T02:37:07.4830982Z           "complete": true,
2026-06-22T02:37:07.4831097Z           "evidence": [
2026-06-22T02:37:07.4831197Z             {
2026-06-22T02:37:07.4831352Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4831458Z               "line": 100
2026-06-22T02:37:07.4831565Z             },
2026-06-22T02:37:07.4831664Z             {
2026-06-22T02:37:07.4831809Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4831923Z               "line": 183
2026-06-22T02:37:07.4832027Z             },
2026-06-22T02:37:07.4832128Z             {
2026-06-22T02:37:07.4832266Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4832371Z               "line": 83
2026-06-22T02:37:07.4832481Z             },
2026-06-22T02:37:07.4832580Z             {
2026-06-22T02:37:07.4832729Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.4832829Z               "line": 629
2026-06-22T02:37:07.4832919Z             },
2026-06-22T02:37:07.4833020Z             {
2026-06-22T02:37:07.4833162Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.4833272Z               "line": 654
2026-06-22T02:37:07.4833373Z             }
2026-06-22T02:37:07.4833477Z           ]
2026-06-22T02:37:07.4833582Z         },
2026-06-22T02:37:07.4833683Z         "int": {
2026-06-22T02:37:07.4833791Z           "complete": false,
2026-06-22T02:37:07.4833896Z           "evidence": []
2026-06-22T02:37:07.4834007Z         },
2026-06-22T02:37:07.4834111Z         "unit": {
2026-06-22T02:37:07.4834219Z           "complete": true,
2026-06-22T02:37:07.4834329Z           "evidence": [
2026-06-22T02:37:07.4834435Z             {
2026-06-22T02:37:07.4834582Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4834693Z               "line": 1445
2026-06-22T02:37:07.4834797Z             },
2026-06-22T02:37:07.4834897Z             {
2026-06-22T02:37:07.4835140Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4835250Z               "line": 1478
2026-06-22T02:37:07.4835355Z             },
2026-06-22T02:37:07.4835464Z             {
2026-06-22T02:37:07.4835603Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.4835717Z               "line": 988
2026-06-22T02:37:07.4835817Z             }
2026-06-22T02:37:07.4835923Z           ]
2026-06-22T02:37:07.4836022Z         }
2026-06-22T02:37:07.4836127Z       }
2026-06-22T02:37:07.4836228Z     },
2026-06-22T02:37:07.4836314Z     {
2026-06-22T02:37:07.4836436Z       "id": "REQ-MANIFEST-5",
2026-06-22T02:37:07.4839484Z       "title": "File-backed adapter [strings] (M12-W3-T3.1): a [strings] dot-path value MAY be an inline-table FILE POINTER `key = { file = \"rel/path\" }` resolved to the file's contents at get-string time, keeping large bodies (skill-instructions, hint text) out of the manifest. A value-position table with a `file` key IS the pointer form (reserved — cannot double as data). Per-adapter aux storage `adapters/<adapter>/strings/`; pointers resolve relative to it with CONTAINMENT (reject `..`/absolute escaping the dir). UPDATE-SAFETY: a LOCAL profile's file-pointers resolve relative to the user-owned local-profile dir (NOT adapter-shipped strings/, which adapter updates overwrite), or the local profile inlines. Validate-at-register (fail-fast on a bad/escaping/missing pointer) + LAZY read at get-string (live file edits reflect, no re-register) + skip-diagnostics on missing-at-read (no hard-crash, mirrors [digest]). Rides the same leaf-replace profile overlay as the rest of [strings].",
2026-06-22T02:37:07.4839634Z       "requiredStages": [
2026-06-22T02:37:07.4839739Z         "doc",
2026-06-22T02:37:07.4839845Z         "impl",
2026-06-22T02:37:07.4839954Z         "unit"
2026-06-22T02:37:07.4840054Z       ],
2026-06-22T02:37:07.4840159Z       "stages": {
2026-06-22T02:37:07.4840264Z         "doc": {
2026-06-22T02:37:07.4840374Z           "complete": true,
2026-06-22T02:37:07.4840488Z           "evidence": [
2026-06-22T02:37:07.4840588Z             {
2026-06-22T02:37:07.4840698Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4840807Z               "line": 83
2026-06-22T02:37:07.4840908Z             }
2026-06-22T02:37:07.4841013Z           ]
2026-06-22T02:37:07.4841113Z         },
2026-06-22T02:37:07.4841213Z         "impl": {
2026-06-22T02:37:07.4841323Z           "complete": true,
2026-06-22T02:37:07.4841428Z           "evidence": [
2026-06-22T02:37:07.4841527Z             {
2026-06-22T02:37:07.4841672Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4841785Z               "line": 120
2026-06-22T02:37:07.4841884Z             }
2026-06-22T02:37:07.4841989Z           ]
2026-06-22T02:37:07.4842088Z         },
2026-06-22T02:37:07.4842196Z         "int": {
2026-06-22T02:37:07.4842311Z           "complete": false,
2026-06-22T02:37:07.4842407Z           "evidence": []
2026-06-22T02:37:07.4842511Z         },
2026-06-22T02:37:07.4842626Z         "unit": {
2026-06-22T02:37:07.4842736Z           "complete": true,
2026-06-22T02:37:07.4842840Z           "evidence": [
2026-06-22T02:37:07.4842946Z             {
2026-06-22T02:37:07.4843084Z               "path": "crates/spt-runtime/src/profile.rs",
2026-06-22T02:37:07.4843192Z               "line": 404
2026-06-22T02:37:07.4843299Z             },
2026-06-22T02:37:07.4843398Z             {
2026-06-22T02:37:07.4843546Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4843651Z               "line": 1155
2026-06-22T02:37:07.4843751Z             },
2026-06-22T02:37:07.4843851Z             {
2026-06-22T02:37:07.4844004Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4844104Z               "line": 1184
2026-06-22T02:37:07.4844210Z             },
2026-06-22T02:37:07.4844305Z             {
2026-06-22T02:37:07.4844447Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4844568Z               "line": 1224
2026-06-22T02:37:07.4844775Z             },
2026-06-22T02:37:07.4844880Z             {
2026-06-22T02:37:07.4845028Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4845133Z               "line": 1239
2026-06-22T02:37:07.4845234Z             }
2026-06-22T02:37:07.4845329Z           ]
2026-06-22T02:37:07.4845433Z         }
2026-06-22T02:37:07.4845539Z       }
2026-06-22T02:37:07.4845629Z     },
2026-06-22T02:37:07.4845733Z     {
2026-06-22T02:37:07.4845844Z       "id": "REQ-MANIFEST-6",
2026-06-22T02:37:07.4847976Z       "title": "Cross-adapter fallback target addressing (M12-W3-T3.2): a cross-adapter fallback target is addressed as `<adapter>:<profile>` (not just a bare adapter_name), resolved through the one composite-addressing resolver (registry::resolve_option) at every adapter-option read site so a fallback may select a shipped/local profile (e.g. a `ccs` profile). CONTEXT.md §cross-adapter-fallback reconciled (\"ccs is a profile; cross-adapter fallback may target <adapter>:<profile>\"). Contract-only this milestone: the node-wide fallback SETTING + its rate-limit invocation are deferred to the consuming milestone (the runtime path does not exist yet); this REQ guarantees the ADDRESSING resolves.",
2026-06-22T02:37:07.4848215Z       "requiredStages": [
2026-06-22T02:37:07.4848324Z         "doc",
2026-06-22T02:37:07.4848430Z         "unit"
2026-06-22T02:37:07.4848525Z       ],
2026-06-22T02:37:07.4848634Z       "stages": {
2026-06-22T02:37:07.4848740Z         "doc": {
2026-06-22T02:37:07.4848854Z           "complete": true,
2026-06-22T02:37:07.4849026Z           "evidence": [
2026-06-22T02:37:07.4849130Z             {
2026-06-22T02:37:07.4849258Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4849370Z               "line": 141
2026-06-22T02:37:07.4849473Z             }
2026-06-22T02:37:07.4849573Z           ]
2026-06-22T02:37:07.4849675Z         },
2026-06-22T02:37:07.4849783Z         "impl": {
2026-06-22T02:37:07.4849887Z           "complete": false,
2026-06-22T02:37:07.4849997Z           "evidence": []
2026-06-22T02:37:07.4850105Z         },
2026-06-22T02:37:07.4850199Z         "int": {
2026-06-22T02:37:07.4850314Z           "complete": false,
2026-06-22T02:37:07.4850420Z           "evidence": []
2026-06-22T02:37:07.4850523Z         },
2026-06-22T02:37:07.4850629Z         "unit": {
2026-06-22T02:37:07.4850744Z           "complete": true,
2026-06-22T02:37:07.4850843Z           "evidence": [
2026-06-22T02:37:07.4850944Z             {
2026-06-22T02:37:07.4851087Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.4851196Z               "line": 1261
2026-06-22T02:37:07.4851297Z             }
2026-06-22T02:37:07.4851406Z           ]
2026-06-22T02:37:07.4851506Z         }
2026-06-22T02:37:07.4851603Z       }
2026-06-22T02:37:07.4851701Z     },
2026-06-22T02:37:07.4851801Z     {
2026-06-22T02:37:07.4851917Z       "id": "REQ-MANIFEST-7",
2026-06-22T02:37:07.4854902Z       "title": "Adapter-declared shortcut basename (M12-W2 follow-on): an optional `[adapter] shortcut_basename` manifest field names the basename the `spt endpoint run` picker bakes into the generated `<basename>-<id>` launcher shortcut (REQ-RUN-SHORTCUT). Absent ⇒ the harness-agnostic default `spt` (→ `spt-<id>`); an adapter sets it to brand its shortcuts (claude-spt → `cc` → `cc-<id>`), so the Claude-Code-ness lives in the PUBLISHED adapter manifest, never hardcoded in spt-core. The picker reads it from the RESOLVED manifest of the selected adapter (registry::resolve_option), falling back to `spt` when absent/empty/unresolvable. Additive + N-1-safe (serde-default Option, omitted from serialization when absent; old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). Documented in docs/MANIFEST.md `[adapter]` section + the claude-spt worked example — the adapter-author contract perri builds spt-claude-code against.",
2026-06-22T02:37:07.4855041Z       "requiredStages": [
2026-06-22T02:37:07.4855147Z         "doc",
2026-06-22T02:37:07.4855383Z         "impl",
2026-06-22T02:37:07.4855494Z         "unit"
2026-06-22T02:37:07.4855593Z       ],
2026-06-22T02:37:07.4855698Z       "stages": {
2026-06-22T02:37:07.4855803Z         "doc": {
2026-06-22T02:37:07.4855912Z           "complete": true,
2026-06-22T02:37:07.4856022Z           "evidence": [
2026-06-22T02:37:07.4856128Z             {
2026-06-22T02:37:07.4856251Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.4856365Z               "line": 35
2026-06-22T02:37:07.4856471Z             }
2026-06-22T02:37:07.4856584Z           ]
2026-06-22T02:37:07.4856690Z         },
2026-06-22T02:37:07.4856795Z         "impl": {
2026-06-22T02:37:07.4857005Z           "complete": true,
2026-06-22T02:37:07.4857115Z           "evidence": [
2026-06-22T02:37:07.4857214Z             {
2026-06-22T02:37:07.4857354Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.4857462Z               "line": 54
2026-06-22T02:37:07.4857561Z             }
2026-06-22T02:37:07.4857676Z           ]
2026-06-22T02:37:07.4857775Z         },
2026-06-22T02:37:07.4857883Z         "int": {
2026-06-22T02:37:07.4857998Z           "complete": false,
2026-06-22T02:37:07.4858104Z           "evidence": []
2026-06-22T02:37:07.4858207Z         },
2026-06-22T02:37:07.4858308Z         "unit": {
2026-06-22T02:37:07.4858417Z           "complete": true,
2026-06-22T02:37:07.4858526Z           "evidence": [
2026-06-22T02:37:07.4858628Z             {
2026-06-22T02:37:07.4858770Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4858879Z               "line": 1638
2026-06-22T02:37:07.4859061Z             }
2026-06-22T02:37:07.4859160Z           ]
2026-06-22T02:37:07.4859267Z         }
2026-06-22T02:37:07.4859371Z       }
2026-06-22T02:37:07.4859475Z     },
2026-06-22T02:37:07.4859572Z     {
2026-06-22T02:37:07.4859695Z       "id": "REQ-MANIFEST-8",
2026-06-22T02:37:07.4861886Z       "title": "[adapter] host_binaries declares the harness executable basenames a kind=\"harness\" adapter hosts agents inside (e.g. host_binaries = [\"claude\"]); bind-time pid→exe-basename match (case-insensitive, .exe-stripped) over the seed's parent_pid selects the candidate adapter set; zero matches → a friendly error naming the binary + the --adapter escape hatch. Additive + N-1-safe: optional Vec<String>, #[serde(default, skip_serializing_if = \"Vec::is_empty\")] (omitted-serialized like shortcut_basename, old manifests parse clean); manifest.schema.json regenerated from the derive (ADR-0001, CI drift-gated). The match-key for ADR-0021 adapter-agnostic bind-time resolution. (v0.9.0)",
2026-06-22T02:37:07.4862028Z       "requiredStages": [
2026-06-22T02:37:07.4862134Z         "doc",
2026-06-22T02:37:07.4862247Z         "impl",
2026-06-22T02:37:07.4862342Z         "unit",
2026-06-22T02:37:07.4862449Z         "int"
2026-06-22T02:37:07.4862548Z       ],
2026-06-22T02:37:07.4862657Z       "stages": {
2026-06-22T02:37:07.4862768Z         "doc": {
2026-06-22T02:37:07.4862873Z           "complete": true,
2026-06-22T02:37:07.4862990Z           "evidence": [
2026-06-22T02:37:07.4863095Z             {
2026-06-22T02:37:07.4863218Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.4863321Z               "line": 184
2026-06-22T02:37:07.4863426Z             },
2026-06-22T02:37:07.4863537Z             {
2026-06-22T02:37:07.4863660Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.4863771Z               "line": 46
2026-06-22T02:37:07.4863880Z             }
2026-06-22T02:37:07.4863989Z           ]
2026-06-22T02:37:07.4864086Z         },
2026-06-22T02:37:07.4864190Z         "impl": {
2026-06-22T02:37:07.4864304Z           "complete": true,
2026-06-22T02:37:07.4864419Z           "evidence": [
2026-06-22T02:37:07.4864533Z             {
2026-06-22T02:37:07.4864686Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4864795Z               "line": 222
2026-06-22T02:37:07.4864895Z             },
2026-06-22T02:37:07.4865006Z             {
2026-06-22T02:37:07.4865152Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4865364Z               "line": 306
2026-06-22T02:37:07.4865471Z             }
2026-06-22T02:37:07.4865568Z           ]
2026-06-22T02:37:07.4865679Z         },
2026-06-22T02:37:07.4865782Z         "int": {
2026-06-22T02:37:07.4865899Z           "complete": true,
2026-06-22T02:37:07.4866015Z           "evidence": [
2026-06-22T02:37:07.4866120Z             {
2026-06-22T02:37:07.4866282Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:37:07.4866387Z               "line": 18
2026-06-22T02:37:07.4866486Z             }
2026-06-22T02:37:07.4866577Z           ]
2026-06-22T02:37:07.4866683Z         },
2026-06-22T02:37:07.4866877Z         "unit": {
2026-06-22T02:37:07.4866997Z           "complete": true,
2026-06-22T02:37:07.4867102Z           "evidence": [
2026-06-22T02:37:07.4867206Z             {
2026-06-22T02:37:07.4867355Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.4867455Z               "line": 1656
2026-06-22T02:37:07.4867565Z             },
2026-06-22T02:37:07.4867675Z             {
2026-06-22T02:37:07.4867817Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4867924Z               "line": 316
2026-06-22T02:37:07.4868026Z             },
2026-06-22T02:37:07.4868135Z             {
2026-06-22T02:37:07.4868269Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4868381Z               "line": 332
2026-06-22T02:37:07.4868486Z             },
2026-06-22T02:37:07.4868591Z             {
2026-06-22T02:37:07.4868729Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.4868834Z               "line": 345
2026-06-22T02:37:07.4869086Z             },
2026-06-22T02:37:07.4869188Z             {
2026-06-22T02:37:07.4869326Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4869444Z               "line": 422
2026-06-22T02:37:07.4869545Z             },
2026-06-22T02:37:07.4869655Z             {
2026-06-22T02:37:07.4869792Z               "path": "crates/spt-store/src/proc.rs",
2026-06-22T02:37:07.4869898Z               "line": 436
2026-06-22T02:37:07.4869998Z             }
2026-06-22T02:37:07.4870088Z           ]
2026-06-22T02:37:07.4870194Z         }
2026-06-22T02:37:07.4870293Z       }
2026-06-22T02:37:07.4870393Z     },
2026-06-22T02:37:07.4870495Z     {
2026-06-22T02:37:07.4870603Z       "id": "REQ-MESH-1",
2026-06-22T02:37:07.4872694Z       "title": "Membership proof (seed-proof): symmetric current-epoch seed-knowledge replaces is_trusted at EVERY inbound gate (registry apply, WAN receive, sync, notif, connection accept). MK = HKDF(seed, domain ‖ subnet_id ‖ seed_epoch); mutual channel-bound challenge-response at connect (transcript binds both handshake-proven node pubkeys, both nonces, subnet_id, seed_epoch, role); verified once per connection, cached on the broker ConnEntry, kept warm via QUIC keep-alive so re-proof is restart/partition/rotation-only. Exact-epoch match (re-seed is the sole N-1 exception). SECURITY INVARIANTS: channel-bound (no cross-connection replay), mutual, accepts a member it never paired (the mesh property).",
2026-06-22T02:37:07.4872840Z       "requiredStages": [
2026-06-22T02:37:07.4872941Z         "impl",
2026-06-22T02:37:07.4873047Z         "unit",
2026-06-22T02:37:07.4873150Z         "int"
2026-06-22T02:37:07.4873256Z       ],
2026-06-22T02:37:07.4873357Z       "stages": {
2026-06-22T02:37:07.4873461Z         "doc": {
2026-06-22T02:37:07.4873570Z           "complete": false,
2026-06-22T02:37:07.4873688Z           "evidence": []
2026-06-22T02:37:07.4873787Z         },
2026-06-22T02:37:07.4873896Z         "impl": {
2026-06-22T02:37:07.4874001Z           "complete": true,
2026-06-22T02:37:07.4874116Z           "evidence": [
2026-06-22T02:37:07.4874215Z             {
2026-06-22T02:37:07.4874369Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.4874478Z               "line": 922
2026-06-22T02:37:07.4874582Z             },
2026-06-22T02:37:07.4874688Z             {
2026-06-22T02:37:07.4874970Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4875078Z               "line": 38
2026-06-22T02:37:07.4875183Z             },
2026-06-22T02:37:07.4875285Z             {
2026-06-22T02:37:07.4875436Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4875551Z               "line": 161
2026-06-22T02:37:07.4875652Z             },
2026-06-22T02:37:07.4875761Z             {
2026-06-22T02:37:07.4875904Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4876013Z               "line": 206
2026-06-22T02:37:07.4876113Z             },
2026-06-22T02:37:07.4876219Z             {
2026-06-22T02:37:07.4876469Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.4876580Z               "line": 57
2026-06-22T02:37:07.4876689Z             },
2026-06-22T02:37:07.4876793Z             {
2026-06-22T02:37:07.4876952Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4877075Z               "line": 24
2026-06-22T02:37:07.4877186Z             },
2026-06-22T02:37:07.4877286Z             {
2026-06-22T02:37:07.4877442Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4877553Z               "line": 142
2026-06-22T02:37:07.4877653Z             },
2026-06-22T02:37:07.4877757Z             {
2026-06-22T02:37:07.4877906Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4878010Z               "line": 162
2026-06-22T02:37:07.4878120Z             }
2026-06-22T02:37:07.4878225Z           ]
2026-06-22T02:37:07.4878329Z         },
2026-06-22T02:37:07.4878435Z         "int": {
2026-06-22T02:37:07.4878564Z           "complete": true,
2026-06-22T02:37:07.4878667Z           "evidence": [
2026-06-22T02:37:07.4878776Z             {
2026-06-22T02:37:07.4879022Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:37:07.4879123Z               "line": 67
2026-06-22T02:37:07.4879224Z             },
2026-06-22T02:37:07.4879336Z             {
2026-06-22T02:37:07.4879486Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:37:07.4879590Z               "line": 93
2026-06-22T02:37:07.4879699Z             },
2026-06-22T02:37:07.4879805Z             {
2026-06-22T02:37:07.4879952Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:37:07.4880063Z               "line": 117
2026-06-22T02:37:07.4880158Z             },
2026-06-22T02:37:07.4880267Z             {
2026-06-22T02:37:07.4880415Z               "path": "crates/spt-daemon/tests/seedproofx.rs",
2026-06-22T02:37:07.4880524Z               "line": 134
2026-06-22T02:37:07.4880633Z             }
2026-06-22T02:37:07.4880735Z           ]
2026-06-22T02:37:07.4880844Z         },
2026-06-22T02:37:07.4880948Z         "unit": {
2026-06-22T02:37:07.4881069Z           "complete": true,
2026-06-22T02:37:07.4881177Z           "evidence": [
2026-06-22T02:37:07.4881268Z             {
2026-06-22T02:37:07.4881417Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.4881529Z               "line": 427
2026-06-22T02:37:07.4881634Z             },
2026-06-22T02:37:07.4881734Z             {
2026-06-22T02:37:07.4881889Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4881995Z               "line": 376
2026-06-22T02:37:07.4882095Z             },
2026-06-22T02:37:07.4882203Z             {
2026-06-22T02:37:07.4882348Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4882467Z               "line": 412
2026-06-22T02:37:07.4882571Z             },
2026-06-22T02:37:07.4882677Z             {
2026-06-22T02:37:07.4882838Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4882939Z               "line": 427
2026-06-22T02:37:07.4883048Z             },
2026-06-22T02:37:07.4883148Z             {
2026-06-22T02:37:07.4883297Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4883506Z               "line": 438
2026-06-22T02:37:07.4883612Z             },
2026-06-22T02:37:07.4883725Z             {
2026-06-22T02:37:07.4883874Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4883984Z               "line": 449
2026-06-22T02:37:07.4884086Z             },
2026-06-22T02:37:07.4884191Z             {
2026-06-22T02:37:07.4884334Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4884451Z               "line": 460
2026-06-22T02:37:07.4884556Z             },
2026-06-22T02:37:07.4884663Z             {
2026-06-22T02:37:07.4884813Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4885019Z               "line": 496
2026-06-22T02:37:07.4885128Z             },
2026-06-22T02:37:07.4885230Z             {
2026-06-22T02:37:07.4885385Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4885492Z               "line": 519
2026-06-22T02:37:07.4885596Z             },
2026-06-22T02:37:07.4885705Z             {
2026-06-22T02:37:07.4885859Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4885973Z               "line": 546
2026-06-22T02:37:07.4886082Z             }
2026-06-22T02:37:07.4886179Z           ]
2026-06-22T02:37:07.4886272Z         }
2026-06-22T02:37:07.4886378Z       }
2026-06-22T02:37:07.4886484Z     },
2026-06-22T02:37:07.4886583Z     {
2026-06-22T02:37:07.4886697Z       "id": "REQ-MESH-2",
2026-06-22T02:37:07.4889308Z       "title": "Member roster: node-level union-merge grow-set (per member: pubkey, label, machine_id, last-known address, last-seen — NOT the seed), the discovery directory the mesh dials by. Seeded IN FULL at pairing (seed-holder hands joiner the whole current roster, incl. offline members — folds in deferred pairing-time hostname capture + post-join address seeding); each node authors its own entry stamped with its lease_epoch, merged strictly-greater-wins (the node_label lease); exchanged only over seed-proof'd member connections; forgery-inert (a fake entry names a pubkey that still can't seed-proof). Removal needs a TOMBSTONE — a per-pubkey revoked marker that propagates, dominates the entry, gates admission (seed-proof ∧ ¬tombstoned), and prevents reinsert; cleared by a completed re-pair of that pubkey. Persists through silence (offline member keeps its entry).",
2026-06-22T02:37:07.4889445Z       "requiredStages": [
2026-06-22T02:37:07.4889554Z         "impl",
2026-06-22T02:37:07.4889673Z         "unit",
2026-06-22T02:37:07.4889784Z         "int"
2026-06-22T02:37:07.4889887Z       ],
2026-06-22T02:37:07.4889983Z       "stages": {
2026-06-22T02:37:07.4890088Z         "doc": {
2026-06-22T02:37:07.4890212Z           "complete": false,
2026-06-22T02:37:07.4890318Z           "evidence": []
2026-06-22T02:37:07.4890422Z         },
2026-06-22T02:37:07.4890522Z         "impl": {
2026-06-22T02:37:07.4890637Z           "complete": true,
2026-06-22T02:37:07.4890746Z           "evidence": [
2026-06-22T02:37:07.4890860Z             {
2026-06-22T02:37:07.4890999Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.4891113Z               "line": 757
2026-06-22T02:37:07.4891213Z             },
2026-06-22T02:37:07.4891319Z             {
2026-06-22T02:37:07.4891471Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.4891577Z               "line": 118
2026-06-22T02:37:07.4891681Z             },
2026-06-22T02:37:07.4891776Z             {
2026-06-22T02:37:07.4891925Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.4892033Z               "line": 347
2026-06-22T02:37:07.4892127Z             },
2026-06-22T02:37:07.4892233Z             {
2026-06-22T02:37:07.4892373Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.4892482Z               "line": 389
2026-06-22T02:37:07.4892588Z             },
2026-06-22T02:37:07.4892693Z             {
2026-06-22T02:37:07.4892840Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.4893065Z               "line": 403
2026-06-22T02:37:07.4893175Z             },
2026-06-22T02:37:07.4893275Z             {
2026-06-22T02:37:07.4893417Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.4893528Z               "line": 492
2026-06-22T02:37:07.4893628Z             },
2026-06-22T02:37:07.4893727Z             {
2026-06-22T02:37:07.4893871Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.4893975Z               "line": 507
2026-06-22T02:37:07.4894075Z             },
2026-06-22T02:37:07.4894181Z             {
2026-06-22T02:37:07.4894328Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.4894539Z               "line": 534
2026-06-22T02:37:07.4894642Z             },
2026-06-22T02:37:07.4894751Z             {
2026-06-22T02:37:07.4894903Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4895011Z               "line": 207
2026-06-22T02:37:07.4895112Z             },
2026-06-22T02:37:07.4895223Z             {
2026-06-22T02:37:07.4895374Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4895480Z               "line": 755
2026-06-22T02:37:07.4895570Z             },
2026-06-22T02:37:07.4895679Z             {
2026-06-22T02:37:07.4895823Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4895932Z               "line": 816
2026-06-22T02:37:07.4896042Z             },
2026-06-22T02:37:07.4896133Z             {
2026-06-22T02:37:07.4896284Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4896395Z               "line": 869
2026-06-22T02:37:07.4896504Z             },
2026-06-22T02:37:07.4896613Z             {
2026-06-22T02:37:07.4896758Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4896876Z               "line": 891
2026-06-22T02:37:07.4896967Z             },
2026-06-22T02:37:07.4897073Z             {
2026-06-22T02:37:07.4897215Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4897316Z               "line": 122
2026-06-22T02:37:07.4897430Z             },
2026-06-22T02:37:07.4897528Z             {
2026-06-22T02:37:07.4897671Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4897782Z               "line": 44
2026-06-22T02:37:07.4897890Z             },
2026-06-22T02:37:07.4897995Z             {
2026-06-22T02:37:07.4898139Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4898243Z               "line": 184
2026-06-22T02:37:07.4898335Z             },
2026-06-22T02:37:07.4898440Z             {
2026-06-22T02:37:07.4898572Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4898688Z               "line": 211
2026-06-22T02:37:07.4898792Z             },
2026-06-22T02:37:07.4898896Z             {
2026-06-22T02:37:07.4899130Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4899236Z               "line": 251
2026-06-22T02:37:07.4899336Z             },
2026-06-22T02:37:07.4899445Z             {
2026-06-22T02:37:07.4899579Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4899698Z               "line": 275
2026-06-22T02:37:07.4899802Z             },
2026-06-22T02:37:07.4899901Z             {
2026-06-22T02:37:07.4900033Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4900138Z               "line": 289
2026-06-22T02:37:07.4900243Z             },
2026-06-22T02:37:07.4900348Z             {
2026-06-22T02:37:07.4900471Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4900582Z               "line": 300
2026-06-22T02:37:07.4900686Z             },
2026-06-22T02:37:07.4900809Z             {
2026-06-22T02:37:07.4900939Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4901043Z               "line": 313
2026-06-22T02:37:07.4901154Z             }
2026-06-22T02:37:07.4901254Z           ]
2026-06-22T02:37:07.4901368Z         },
2026-06-22T02:37:07.4901573Z         "int": {
2026-06-22T02:37:07.4901682Z           "complete": true,
2026-06-22T02:37:07.4901803Z           "evidence": [
2026-06-22T02:37:07.4901898Z             {
2026-06-22T02:37:07.4902055Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T02:37:07.4902161Z               "line": 116
2026-06-22T02:37:07.4902269Z             },
2026-06-22T02:37:07.4902374Z             {
2026-06-22T02:37:07.4902518Z               "path": "crates/spt-daemon/tests/rosterprop.rs",
2026-06-22T02:37:07.4902626Z               "line": 181
2026-06-22T02:37:07.4902716Z             }
2026-06-22T02:37:07.4902822Z           ]
2026-06-22T02:37:07.4902924Z         },
2026-06-22T02:37:07.4903134Z         "unit": {
2026-06-22T02:37:07.4903253Z           "complete": true,
2026-06-22T02:37:07.4903362Z           "evidence": [
2026-06-22T02:37:07.4903468Z             {
2026-06-22T02:37:07.4903615Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4903730Z               "line": 999
2026-06-22T02:37:07.4903845Z             },
2026-06-22T02:37:07.4903949Z             {
2026-06-22T02:37:07.4904102Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4904202Z               "line": 1016
2026-06-22T02:37:07.4904311Z             },
2026-06-22T02:37:07.4904403Z             {
2026-06-22T02:37:07.4904549Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4904655Z               "line": 1024
2026-06-22T02:37:07.4904765Z             },
2026-06-22T02:37:07.4904869Z             {
2026-06-22T02:37:07.4905009Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4905127Z               "line": 1048
2026-06-22T02:37:07.4905235Z             },
2026-06-22T02:37:07.4905335Z             {
2026-06-22T02:37:07.4905486Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.4905590Z               "line": 1499
2026-06-22T02:37:07.4905696Z             },
2026-06-22T02:37:07.4905797Z             {
2026-06-22T02:37:07.4905953Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4906064Z               "line": 347
2026-06-22T02:37:07.4906172Z             },
2026-06-22T02:37:07.4909186Z             {
2026-06-22T02:37:07.4909371Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4909486Z               "line": 370
2026-06-22T02:37:07.4909582Z             },
2026-06-22T02:37:07.4909681Z             {
2026-06-22T02:37:07.4909830Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4909948Z               "line": 407
2026-06-22T02:37:07.4910067Z             },
2026-06-22T02:37:07.4910164Z             {
2026-06-22T02:37:07.4910319Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4910433Z               "line": 431
2026-06-22T02:37:07.4910538Z             },
2026-06-22T02:37:07.4910631Z             {
2026-06-22T02:37:07.4910765Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4910875Z               "line": 483
2026-06-22T02:37:07.4910988Z             },
2026-06-22T02:37:07.4911094Z             {
2026-06-22T02:37:07.4911228Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4911337Z               "line": 499
2026-06-22T02:37:07.4911438Z             },
2026-06-22T02:37:07.4911542Z             {
2026-06-22T02:37:07.4911675Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4911781Z               "line": 514
2026-06-22T02:37:07.4911914Z             },
2026-06-22T02:37:07.4912018Z             {
2026-06-22T02:37:07.4912162Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4912305Z               "line": 531
2026-06-22T02:37:07.4912411Z             }
2026-06-22T02:37:07.4912514Z           ]
2026-06-22T02:37:07.4912605Z         }
2026-06-22T02:37:07.4912702Z       }
2026-06-22T02:37:07.4912796Z     },
2026-06-22T02:37:07.4912901Z     {
2026-06-22T02:37:07.4913012Z       "id": "REQ-MESH-3",
2026-06-22T02:37:07.4914738Z       "title": "Mesh row fan-out: registry rows stay OWN-AUTHORED; the only change is the push target widens from directly-paired peers to ALL roster members (a wider DIRECT fan-out, never a third-party relay). Every row/message still arrives from its author over a handshake → KNOWN-HAZARDS 7.5 (origin = handshake node) and 4.10 (eviction lease: any future update comes from that node itself, alive) PRESERVED VERBATIM. Closes the staggered A→B→C repro: C (roster-seeded with A at pairing) initiates to A, seed-proof admits C unpaired, A learns C, both push directly.",
2026-06-22T02:37:07.4915001Z       "requiredStages": [
2026-06-22T02:37:07.4915110Z         "impl",
2026-06-22T02:37:07.4915311Z         "unit",
2026-06-22T02:37:07.4915420Z         "int"
2026-06-22T02:37:07.4915520Z       ],
2026-06-22T02:37:07.4915626Z       "stages": {
2026-06-22T02:37:07.4915725Z         "doc": {
2026-06-22T02:37:07.4915843Z           "complete": false,
2026-06-22T02:37:07.4915948Z           "evidence": []
2026-06-22T02:37:07.4916056Z         },
2026-06-22T02:37:07.4916165Z         "impl": {
2026-06-22T02:37:07.4916280Z           "complete": true,
2026-06-22T02:37:07.4916389Z           "evidence": [
2026-06-22T02:37:07.4916494Z             {
2026-06-22T02:37:07.4916652Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4916766Z               "line": 641
2026-06-22T02:37:07.4916867Z             }
2026-06-22T02:37:07.4916976Z           ]
2026-06-22T02:37:07.4917076Z         },
2026-06-22T02:37:07.4917187Z         "int": {
2026-06-22T02:37:07.4917305Z           "complete": true,
2026-06-22T02:37:07.4917414Z           "evidence": [
2026-06-22T02:37:07.4917516Z             {
2026-06-22T02:37:07.4917677Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T02:37:07.4917792Z               "line": 373
2026-06-22T02:37:07.4917892Z             },
2026-06-22T02:37:07.4917996Z             {
2026-06-22T02:37:07.4918141Z               "path": "crates/spt-daemon/tests/mesh.rs",
2026-06-22T02:37:07.4918258Z               "line": 436
2026-06-22T02:37:07.4918364Z             }
2026-06-22T02:37:07.4918470Z           ]
2026-06-22T02:37:07.4918583Z         },
2026-06-22T02:37:07.4918686Z         "unit": {
2026-06-22T02:37:07.4918806Z           "complete": true,
2026-06-22T02:37:07.4918916Z           "evidence": [
2026-06-22T02:37:07.4919116Z             {
2026-06-22T02:37:07.4919259Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.4919383Z               "line": 910
2026-06-22T02:37:07.4919489Z             }
2026-06-22T02:37:07.4919598Z           ]
2026-06-22T02:37:07.4919702Z         }
2026-06-22T02:37:07.4919798Z       }
2026-06-22T02:37:07.4919903Z     },
2026-06-22T02:37:07.4920012Z     {
2026-06-22T02:37:07.4920127Z       "id": "REQ-MESH-4",
2026-06-22T02:37:07.4923572Z       "title": "Revoke + timeboxed seed rotation + re-seed grace: `spt subnet revoke <node>...` (list, elevation-gated, revoke-only) writes roster tombstones immediately, then schedules ONE seed rotation (re-mint seed, bump seed_epoch, push new seed CONFIDENTIALLY over member-auth'd TLS connections — never in roster/registry gossip — force-drop revokees) at the close of a coalescing window (default 1h); further revokes in the window join the same rotation (one epoch bump). `--force-rotate-seed` rotates immediately (compromised-node path). RE-SEED GRACE: a node proving the immediately-prior epoch (N-1) AND still on the roster gets a re-seed-only restricted connection (auto-heals a benign offliner); revoked/off-roster denied; ≥2 stale → re-pair.",
2026-06-22T02:37:07.4923770Z       "requiredStages": [
2026-06-22T02:37:07.4923922Z         "impl",
2026-06-22T02:37:07.4924063Z         "unit",
2026-06-22T02:37:07.4924211Z         "int"
2026-06-22T02:37:07.4924364Z       ],
2026-06-22T02:37:07.4924497Z       "stages": {
2026-06-22T02:37:07.4924645Z         "doc": {
2026-06-22T02:37:07.4924793Z           "complete": false,
2026-06-22T02:37:07.4924945Z           "evidence": []
2026-06-22T02:37:07.4925088Z         },
2026-06-22T02:37:07.4925389Z         "impl": {
2026-06-22T02:37:07.4925552Z           "complete": true,
2026-06-22T02:37:07.4925698Z           "evidence": [
2026-06-22T02:37:07.4925843Z             {
2026-06-22T02:37:07.4926066Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:37:07.4926219Z               "line": 33
2026-06-22T02:37:07.4926365Z             },
2026-06-22T02:37:07.4926522Z             {
2026-06-22T02:37:07.4926744Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4926893Z               "line": 68
2026-06-22T02:37:07.4927034Z             },
2026-06-22T02:37:07.4927165Z             {
2026-06-22T02:37:07.4927383Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4927717Z               "line": 111
2026-06-22T02:37:07.4927860Z             },
2026-06-22T02:37:07.4928008Z             {
2026-06-22T02:37:07.4928213Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4928371Z               "line": 462
2026-06-22T02:37:07.4928518Z             },
2026-06-22T02:37:07.4928662Z             {
2026-06-22T02:37:07.4928871Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4929082Z               "line": 711
2026-06-22T02:37:07.4929237Z             },
2026-06-22T02:37:07.4929332Z             {
2026-06-22T02:37:07.4929486Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4929589Z               "line": 725
2026-06-22T02:37:07.4929691Z             },
2026-06-22T02:37:07.4929796Z             {
2026-06-22T02:37:07.4929928Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.4930044Z               "line": 132
2026-06-22T02:37:07.4930158Z             },
2026-06-22T02:37:07.4930253Z             {
2026-06-22T02:37:07.4930396Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:37:07.4930510Z               "line": 26
2026-06-22T02:37:07.4930611Z             },
2026-06-22T02:37:07.4930711Z             {
2026-06-22T02:37:07.4930853Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:37:07.4930960Z               "line": 97
2026-06-22T02:37:07.4931059Z             },
2026-06-22T02:37:07.4931164Z             {
2026-06-22T02:37:07.4931303Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:37:07.4931421Z               "line": 119
2026-06-22T02:37:07.4931520Z             },
2026-06-22T02:37:07.4931630Z             {
2026-06-22T02:37:07.4931761Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4931870Z               "line": 82
2026-06-22T02:37:07.4931976Z             },
2026-06-22T02:37:07.4932071Z             {
2026-06-22T02:37:07.4932214Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4932310Z               "line": 111
2026-06-22T02:37:07.4932419Z             },
2026-06-22T02:37:07.4932524Z             {
2026-06-22T02:37:07.4932657Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4932771Z               "line": 232
2026-06-22T02:37:07.4932882Z             },
2026-06-22T02:37:07.4932986Z             {
2026-06-22T02:37:07.4933125Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4933230Z               "line": 245
2026-06-22T02:37:07.4933320Z             },
2026-06-22T02:37:07.4933425Z             {
2026-06-22T02:37:07.4933565Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4933678Z               "line": 4665
2026-06-22T02:37:07.4933778Z             }
2026-06-22T02:37:07.4933879Z           ]
2026-06-22T02:37:07.4933987Z         },
2026-06-22T02:37:07.4934089Z         "int": {
2026-06-22T02:37:07.4934213Z           "complete": true,
2026-06-22T02:37:07.4934320Z           "evidence": [
2026-06-22T02:37:07.4934420Z             {
2026-06-22T02:37:07.4934577Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T02:37:07.4934690Z               "line": 98
2026-06-22T02:37:07.4934795Z             },
2026-06-22T02:37:07.4934891Z             {
2026-06-22T02:37:07.4935149Z               "path": "crates/spt-daemon/tests/reseed.rs",
2026-06-22T02:37:07.4935258Z               "line": 140
2026-06-22T02:37:07.4935353Z             }
2026-06-22T02:37:07.4935459Z           ]
2026-06-22T02:37:07.4935559Z         },
2026-06-22T02:37:07.4935667Z         "unit": {
2026-06-22T02:37:07.4935778Z           "complete": true,
2026-06-22T02:37:07.4935892Z           "evidence": [
2026-06-22T02:37:07.4935997Z             {
2026-06-22T02:37:07.4936154Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:37:07.4936273Z               "line": 178
2026-06-22T02:37:07.4936365Z             },
2026-06-22T02:37:07.4937285Z             {
2026-06-22T02:37:07.4937595Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:37:07.4937711Z               "line": 242
2026-06-22T02:37:07.4937815Z             },
2026-06-22T02:37:07.4937919Z             {
2026-06-22T02:37:07.4938077Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4938191Z               "line": 1079
2026-06-22T02:37:07.4938287Z             },
2026-06-22T02:37:07.4938392Z             {
2026-06-22T02:37:07.4938540Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4938651Z               "line": 1109
2026-06-22T02:37:07.4938754Z             },
2026-06-22T02:37:07.4938854Z             {
2026-06-22T02:37:07.4939087Z               "path": "crates/spt-daemon/src/seedproofx.rs",
2026-06-22T02:37:07.4939197Z               "line": 1129
2026-06-22T02:37:07.4939309Z             },
2026-06-22T02:37:07.4939407Z             {
2026-06-22T02:37:07.4939570Z               "path": "crates/spt-net/src/net/mesh/seedproof.rs",
2026-06-22T02:37:07.4939689Z               "line": 602
2026-06-22T02:37:07.4939788Z             },
2026-06-22T02:37:07.4939892Z             {
2026-06-22T02:37:07.4940032Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:37:07.4940135Z               "line": 148
2026-06-22T02:37:07.4940241Z             },
2026-06-22T02:37:07.4940351Z             {
2026-06-22T02:37:07.4940493Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:37:07.4940599Z               "line": 169
2026-06-22T02:37:07.4940699Z             },
2026-06-22T02:37:07.4940808Z             {
2026-06-22T02:37:07.4940952Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:37:07.4941108Z               "line": 181
2026-06-22T02:37:07.4941224Z             },
2026-06-22T02:37:07.4941319Z             {
2026-06-22T02:37:07.4941457Z               "path": "crates/spt-store/src/rotation.rs",
2026-06-22T02:37:07.4941562Z               "line": 202
2026-06-22T02:37:07.4941671Z             },
2026-06-22T02:37:07.4941772Z             {
2026-06-22T02:37:07.4941910Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4942018Z               "line": 375
2026-06-22T02:37:07.4942123Z             },
2026-06-22T02:37:07.4942232Z             {
2026-06-22T02:37:07.4942364Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.4942484Z               "line": 407
2026-06-22T02:37:07.4942589Z             },
2026-06-22T02:37:07.4942678Z             {
2026-06-22T02:37:07.4942812Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4942922Z               "line": 10052
2026-06-22T02:37:07.4943026Z             }
2026-06-22T02:37:07.4943128Z           ]
2026-06-22T02:37:07.4943227Z         }
2026-06-22T02:37:07.4943331Z       }
2026-06-22T02:37:07.4943433Z     },
2026-06-22T02:37:07.4943533Z     {
2026-06-22T02:37:07.4943646Z       "id": "REQ-MESH-5",
2026-06-22T02:37:07.4945081Z       "title": "Hard cutover from pairwise trust: delete peers.json + the is_trusted authorization path (no migration — expendable test fleet, re-pairs fresh under the new model, user decision 2026-06-08). Warn-on-change DEMOTED from a gate to an awareness notice anchored on machine_id (not label): 'machine M, last seen as K1, now presents K2' — fires the same event as the REQ-SUBNET-7 re-pair overwrite. The TrustStore/peers.json code and its call sites are removed, not left dead.",
2026-06-22T02:37:07.4945317Z       "requiredStages": [
2026-06-22T02:37:07.4945422Z         "impl",
2026-06-22T02:37:07.4945531Z         "unit"
2026-06-22T02:37:07.4945631Z       ],
2026-06-22T02:37:07.4945737Z       "stages": {
2026-06-22T02:37:07.4945842Z         "doc": {
2026-06-22T02:37:07.4945956Z           "complete": false,
2026-06-22T02:37:07.4946076Z           "evidence": []
2026-06-22T02:37:07.4946170Z         },
2026-06-22T02:37:07.4946285Z         "impl": {
2026-06-22T02:37:07.4946395Z           "complete": true,
2026-06-22T02:37:07.4946499Z           "evidence": [
2026-06-22T02:37:07.4946600Z             {
2026-06-22T02:37:07.4946838Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.4946953Z               "line": 61
2026-06-22T02:37:07.4947053Z             },
2026-06-22T02:37:07.4947162Z             {
2026-06-22T02:37:07.4947307Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.4947419Z               "line": 109
2026-06-22T02:37:07.4947523Z             },
2026-06-22T02:37:07.4947629Z             {
2026-06-22T02:37:07.4947769Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.4947869Z               "line": 104
2026-06-22T02:37:07.4947970Z             },
2026-06-22T02:37:07.4948074Z             {
2026-06-22T02:37:07.4948213Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.4948318Z               "line": 105
2026-06-22T02:37:07.4948422Z             },
2026-06-22T02:37:07.4948523Z             {
2026-06-22T02:37:07.4948671Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4948789Z               "line": 85
2026-06-22T02:37:07.4948896Z             },
2026-06-22T02:37:07.4949080Z             {
2026-06-22T02:37:07.4949239Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4949348Z               "line": 250
2026-06-22T02:37:07.4949447Z             },
2026-06-22T02:37:07.4949554Z             {
2026-06-22T02:37:07.4949705Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4949806Z               "line": 314
2026-06-22T02:37:07.4949915Z             },
2026-06-22T02:37:07.4950020Z             {
2026-06-22T02:37:07.4950169Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4950272Z               "line": 767
2026-06-22T02:37:07.4950376Z             },
2026-06-22T02:37:07.4950482Z             {
2026-06-22T02:37:07.4950610Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.4950710Z               "line": 101
2026-06-22T02:37:07.4950816Z             },
2026-06-22T02:37:07.4950921Z             {
2026-06-22T02:37:07.4951063Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4951164Z               "line": 193
2026-06-22T02:37:07.4951273Z             }
2026-06-22T02:37:07.4951373Z           ]
2026-06-22T02:37:07.4951483Z         },
2026-06-22T02:37:07.4951588Z         "int": {
2026-06-22T02:37:07.4951707Z           "complete": false,
2026-06-22T02:37:07.4951812Z           "evidence": []
2026-06-22T02:37:07.4951912Z         },
2026-06-22T02:37:07.4952022Z         "unit": {
2026-06-22T02:37:07.4952127Z           "complete": true,
2026-06-22T02:37:07.4952231Z           "evidence": [
2026-06-22T02:37:07.4952327Z             {
2026-06-22T02:37:07.4952470Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.4952579Z               "line": 1009
2026-06-22T02:37:07.4952683Z             },
2026-06-22T02:37:07.4952783Z             {
2026-06-22T02:37:07.4952919Z               "path": "crates/spt-store/src/roster.rs",
2026-06-22T02:37:07.4953034Z               "line": 462
2026-06-22T02:37:07.4953130Z             }
2026-06-22T02:37:07.4953229Z           ]
2026-06-22T02:37:07.4953334Z         }
2026-06-22T02:37:07.4953440Z       }
2026-06-22T02:37:07.4953549Z     },
2026-06-22T02:37:07.4953644Z     {
2026-06-22T02:37:07.4953759Z       "id": "REQ-MESH-6",
2026-06-22T02:37:07.4955132Z       "title": "Concurrent liveness probes: `spt subnet status --nodes` fans out its offline/serve-probes (REQ-SUBNET-5) CONCURRENTLY — total wall-time bounded by the single-probe ceiling (~3s), never k×ceiling. The mesh makes a node see ALL members (many possibly offline), so a serial probe loop would be offline_count×3s. (Planning verifies the current REQ-SUBNET-5 probe loop's behavior and fixes it if serial.)",
2026-06-22T02:37:07.4955257Z       "requiredStages": [
2026-06-22T02:37:07.4955366Z         "impl",
2026-06-22T02:37:07.4955469Z         "unit"
2026-06-22T02:37:07.4955560Z       ],
2026-06-22T02:37:07.4955669Z       "stages": {
2026-06-22T02:37:07.4955872Z         "doc": {
2026-06-22T02:37:07.4955988Z           "complete": false,
2026-06-22T02:37:07.4956096Z           "evidence": []
2026-06-22T02:37:07.4956191Z         },
2026-06-22T02:37:07.4956283Z         "impl": {
2026-06-22T02:37:07.4956402Z           "complete": true,
2026-06-22T02:37:07.4956516Z           "evidence": [
2026-06-22T02:37:07.4957088Z             {
2026-06-22T02:37:07.4957232Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4957340Z               "line": 4181
2026-06-22T02:37:07.4957446Z             }
2026-06-22T02:37:07.4957547Z           ]
2026-06-22T02:37:07.4957660Z         },
2026-06-22T02:37:07.4957766Z         "int": {
2026-06-22T02:37:07.4957876Z           "complete": false,
2026-06-22T02:37:07.4957998Z           "evidence": []
2026-06-22T02:37:07.4958088Z         },
2026-06-22T02:37:07.4958193Z         "unit": {
2026-06-22T02:37:07.4958301Z           "complete": true,
2026-06-22T02:37:07.4958405Z           "evidence": [
2026-06-22T02:37:07.4958521Z             {
2026-06-22T02:37:07.4958653Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4958768Z               "line": 10602
2026-06-22T02:37:07.4958869Z             },
2026-06-22T02:37:07.4959063Z             {
2026-06-22T02:37:07.4959193Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4959306Z               "line": 10629
2026-06-22T02:37:07.4959413Z             },
2026-06-22T02:37:07.4959503Z             {
2026-06-22T02:37:07.4959626Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4959737Z               "line": 10653
2026-06-22T02:37:07.4959837Z             }
2026-06-22T02:37:07.4959941Z           ]
2026-06-22T02:37:07.4960042Z         }
2026-06-22T02:37:07.4960147Z       }
2026-06-22T02:37:07.4960246Z     },
2026-06-22T02:37:07.4960352Z     {
2026-06-22T02:37:07.4960466Z       "id": "REQ-MIGRATE-1",
2026-06-22T02:37:07.4960667Z       "title": "Auto-detect and migrate a legacy claude_skill_owl install",
2026-06-22T02:37:07.4960791Z       "requiredStages": [],
2026-06-22T02:37:07.4960908Z       "stages": {
2026-06-22T02:37:07.4961008Z         "doc": {
2026-06-22T02:37:07.4961114Z           "complete": false,
2026-06-22T02:37:07.4961227Z           "evidence": []
2026-06-22T02:37:07.4961337Z         },
2026-06-22T02:37:07.4961442Z         "impl": {
2026-06-22T02:37:07.4961571Z           "complete": false,
2026-06-22T02:37:07.4961696Z           "evidence": []
2026-06-22T02:37:07.4961796Z         },
2026-06-22T02:37:07.4961895Z         "int": {
2026-06-22T02:37:07.4962015Z           "complete": false,
2026-06-22T02:37:07.4962124Z           "evidence": []
2026-06-22T02:37:07.4962229Z         },
2026-06-22T02:37:07.4962330Z         "unit": {
2026-06-22T02:37:07.4962434Z           "complete": false,
2026-06-22T02:37:07.4962548Z           "evidence": []
2026-06-22T02:37:07.4962645Z         }
2026-06-22T02:37:07.4962753Z       }
2026-06-22T02:37:07.4962853Z     },
2026-06-22T02:37:07.4962960Z     {
2026-06-22T02:37:07.4963067Z       "id": "REQ-MSG-1",
2026-06-22T02:37:07.4963546Z       "title": "Local message delivery: TCP-first to a registered address, spool fallback when offline; id->address via registry (stale-clean first); reply routing (__REPLY_TO__)",
2026-06-22T02:37:07.4963657Z       "requiredStages": [
2026-06-22T02:37:07.4963766Z         "impl",
2026-06-22T02:37:07.4963875Z         "unit",
2026-06-22T02:37:07.4964094Z         "int"
2026-06-22T02:37:07.4964200Z       ],
2026-06-22T02:37:07.4964305Z       "stages": {
2026-06-22T02:37:07.4964414Z         "doc": {
2026-06-22T02:37:07.4964524Z           "complete": false,
2026-06-22T02:37:07.4964634Z           "evidence": []
2026-06-22T02:37:07.4964738Z         },
2026-06-22T02:37:07.4964844Z         "impl": {
2026-06-22T02:37:07.4964967Z           "complete": true,
2026-06-22T02:37:07.4965077Z           "evidence": [
2026-06-22T02:37:07.4965178Z             {
2026-06-22T02:37:07.4965325Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4965429Z               "line": 28
2026-06-22T02:37:07.4965649Z             },
2026-06-22T02:37:07.4965754Z             {
2026-06-22T02:37:07.4965893Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4966006Z               "line": 94
2026-06-22T02:37:07.4966110Z             },
2026-06-22T02:37:07.4966210Z             {
2026-06-22T02:37:07.4966347Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4966466Z               "line": 127
2026-06-22T02:37:07.4966567Z             },
2026-06-22T02:37:07.4966671Z             {
2026-06-22T02:37:07.4966800Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4966910Z               "line": 149
2026-06-22T02:37:07.4967028Z             },
2026-06-22T02:37:07.4967129Z             {
2026-06-22T02:37:07.4967258Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4967367Z               "line": 174
2026-06-22T02:37:07.4967468Z             },
2026-06-22T02:37:07.4967572Z             {
2026-06-22T02:37:07.4967706Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:37:07.4967816Z               "line": 18
2026-06-22T02:37:07.4967920Z             },
2026-06-22T02:37:07.4968030Z             {
2026-06-22T02:37:07.4968155Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.4968269Z               "line": 13
2026-06-22T02:37:07.4968375Z             },
2026-06-22T02:37:07.4968474Z             {
2026-06-22T02:37:07.4968606Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.4968716Z               "line": 62
2026-06-22T02:37:07.4968838Z             },
2026-06-22T02:37:07.4969443Z             {
2026-06-22T02:37:07.4969610Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.4969715Z               "line": 13
2026-06-22T02:37:07.4969815Z             }
2026-06-22T02:37:07.4969919Z           ]
2026-06-22T02:37:07.4970020Z         },
2026-06-22T02:37:07.4970129Z         "int": {
2026-06-22T02:37:07.4970239Z           "complete": true,
2026-06-22T02:37:07.4970350Z           "evidence": [
2026-06-22T02:37:07.4970459Z             {
2026-06-22T02:37:07.4970626Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:37:07.4970735Z               "line": 9
2026-06-22T02:37:07.4970839Z             },
2026-06-22T02:37:07.4970946Z             {
2026-06-22T02:37:07.4971096Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:37:07.4971208Z               "line": 56
2026-06-22T02:37:07.4971313Z             },
2026-06-22T02:37:07.4971416Z             {
2026-06-22T02:37:07.4971573Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:37:07.4971674Z               "line": 113
2026-06-22T02:37:07.4971778Z             }
2026-06-22T02:37:07.4971873Z           ]
2026-06-22T02:37:07.4971979Z         },
2026-06-22T02:37:07.4972088Z         "unit": {
2026-06-22T02:37:07.4972188Z           "complete": true,
2026-06-22T02:37:07.4972298Z           "evidence": [
2026-06-22T02:37:07.4972403Z             {
2026-06-22T02:37:07.4972546Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4972651Z               "line": 203
2026-06-22T02:37:07.4972755Z             },
2026-06-22T02:37:07.4972861Z             {
2026-06-22T02:37:07.4972989Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4973104Z               "line": 232
2026-06-22T02:37:07.4973318Z             },
2026-06-22T02:37:07.4973423Z             {
2026-06-22T02:37:07.4973549Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4973656Z               "line": 277
2026-06-22T02:37:07.4973765Z             },
2026-06-22T02:37:07.4973917Z             {
2026-06-22T02:37:07.4974072Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4974188Z               "line": 300
2026-06-22T02:37:07.4974292Z             },
2026-06-22T02:37:07.4974401Z             {
2026-06-22T02:37:07.4974531Z               "path": "crates/spt-msg/src/deliver.rs",
2026-06-22T02:37:07.4974645Z               "line": 325
2026-06-22T02:37:07.4974837Z             },
2026-06-22T02:37:07.4974936Z             {
2026-06-22T02:37:07.4975080Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:37:07.4975175Z               "line": 204
2026-06-22T02:37:07.4975284Z             },
2026-06-22T02:37:07.4975384Z             {
2026-06-22T02:37:07.4975527Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:37:07.4975637Z               "line": 237
2026-06-22T02:37:07.4975748Z             },
2026-06-22T02:37:07.4975851Z             {
2026-06-22T02:37:07.4975995Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:37:07.4976096Z               "line": 251
2026-06-22T02:37:07.4976190Z             },
2026-06-22T02:37:07.4976300Z             {
2026-06-22T02:37:07.4976435Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:37:07.4976552Z               "line": 263
2026-06-22T02:37:07.4976661Z             },
2026-06-22T02:37:07.4976766Z             {
2026-06-22T02:37:07.4976912Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.4977031Z               "line": 162
2026-06-22T02:37:07.4977132Z             },
2026-06-22T02:37:07.4977226Z             {
2026-06-22T02:37:07.4977379Z               "path": "crates/spt-msg/src/ring.rs",
2026-06-22T02:37:07.4977489Z               "line": 242
2026-06-22T02:37:07.4977593Z             },
2026-06-22T02:37:07.4977704Z             {
2026-06-22T02:37:07.4977837Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.4977947Z               "line": 134
2026-06-22T02:37:07.4978037Z             },
2026-06-22T02:37:07.4978142Z             {
2026-06-22T02:37:07.4978266Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.4978376Z               "line": 153
2026-06-22T02:37:07.4978480Z             }
2026-06-22T02:37:07.4978586Z           ]
2026-06-22T02:37:07.4978686Z         }
2026-06-22T02:37:07.4978781Z       }
2026-06-22T02:37:07.4978871Z     },
2026-06-22T02:37:07.4979175Z     {
2026-06-22T02:37:07.4979535Z       "id": "REQ-MSG-2",
2026-06-22T02:37:07.4979878Z       "title": "spt binary CLI surface: send/ring/ready(+--once)/list/stop/whoami, stable arg shapes + exit codes",
2026-06-22T02:37:07.4979999Z       "requiredStages": [
2026-06-22T02:37:07.4980112Z         "impl",
2026-06-22T02:37:07.4980203Z         "unit"
2026-06-22T02:37:07.4980309Z       ],
2026-06-22T02:37:07.4980413Z       "stages": {
2026-06-22T02:37:07.4980513Z         "doc": {
2026-06-22T02:37:07.4980628Z           "complete": false,
2026-06-22T02:37:07.4980737Z           "evidence": []
2026-06-22T02:37:07.4980837Z         },
2026-06-22T02:37:07.4980933Z         "impl": {
2026-06-22T02:37:07.4981052Z           "complete": true,
2026-06-22T02:37:07.4981152Z           "evidence": [
2026-06-22T02:37:07.4981258Z             {
2026-06-22T02:37:07.4981400Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4981502Z               "line": 11
2026-06-22T02:37:07.4981605Z             },
2026-06-22T02:37:07.4981706Z             {
2026-06-22T02:37:07.4981844Z               "path": "crates/spt/src/main.rs",
2026-06-22T02:37:07.4981953Z               "line": 8
2026-06-22T02:37:07.4982066Z             }
2026-06-22T02:37:07.4982171Z           ]
2026-06-22T02:37:07.4982273Z         },
2026-06-22T02:37:07.4982376Z         "int": {
2026-06-22T02:37:07.4982486Z           "complete": false,
2026-06-22T02:37:07.4982715Z           "evidence": []
2026-06-22T02:37:07.4982811Z         },
2026-06-22T02:37:07.4982921Z         "unit": {
2026-06-22T02:37:07.4983039Z           "complete": true,
2026-06-22T02:37:07.4983150Z           "evidence": [
2026-06-22T02:37:07.4983249Z             {
2026-06-22T02:37:07.4983378Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4983484Z               "line": 7717
2026-06-22T02:37:07.4983578Z             },
2026-06-22T02:37:07.4983673Z             {
2026-06-22T02:37:07.4983803Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4983911Z               "line": 7759
2026-06-22T02:37:07.4984114Z             },
2026-06-22T02:37:07.4984221Z             {
2026-06-22T02:37:07.4984349Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4984459Z               "line": 7808
2026-06-22T02:37:07.4984566Z             },
2026-06-22T02:37:07.4984681Z             {
2026-06-22T02:37:07.4984806Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4984929Z               "line": 7831
2026-06-22T02:37:07.4985029Z             },
2026-06-22T02:37:07.4985134Z             {
2026-06-22T02:37:07.4985258Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4985378Z               "line": 9807
2026-06-22T02:37:07.4985492Z             },
2026-06-22T02:37:07.4985596Z             {
2026-06-22T02:37:07.4985717Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4985830Z               "line": 9816
2026-06-22T02:37:07.4985944Z             },
2026-06-22T02:37:07.4986036Z             {
2026-06-22T02:37:07.4986173Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.4986289Z               "line": 9830
2026-06-22T02:37:07.4986384Z             }
2026-06-22T02:37:07.4986493Z           ]
2026-06-22T02:37:07.4986599Z         }
2026-06-22T02:37:07.4986708Z       }
2026-06-22T02:37:07.4986812Z     },
2026-06-22T02:37:07.4986919Z     {
2026-06-22T02:37:07.4987041Z       "id": "REQ-MSG-3",
2026-06-22T02:37:07.4987443Z       "title": "Ready-agent lifecycle: register perch (info.json + listener + registry address) on ready, drain spooled backlog on startup, clean teardown",
2026-06-22T02:37:07.4987562Z       "requiredStages": [
2026-06-22T02:37:07.4987668Z         "impl",
2026-06-22T02:37:07.4987772Z         "unit",
2026-06-22T02:37:07.4987882Z         "int"
2026-06-22T02:37:07.4987973Z       ],
2026-06-22T02:37:07.4988091Z       "stages": {
2026-06-22T02:37:07.4988192Z         "doc": {
2026-06-22T02:37:07.4988316Z           "complete": false,
2026-06-22T02:37:07.4988420Z           "evidence": []
2026-06-22T02:37:07.4988526Z         },
2026-06-22T02:37:07.4988631Z         "impl": {
2026-06-22T02:37:07.4988745Z           "complete": true,
2026-06-22T02:37:07.4988875Z           "evidence": [
2026-06-22T02:37:07.4989045Z             {
2026-06-22T02:37:07.4989190Z               "path": "crates/spt-msg/src/listener.rs",
2026-06-22T02:37:07.4989298Z               "line": 19
2026-06-22T02:37:07.4989413Z             },
2026-06-22T02:37:07.4989542Z             {
2026-06-22T02:37:07.4989674Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4989788Z               "line": 21
2026-06-22T02:37:07.4989897Z             },
2026-06-22T02:37:07.4990001Z             {
2026-06-22T02:37:07.4990139Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4990249Z               "line": 48
2026-06-22T02:37:07.4990358Z             },
2026-06-22T02:37:07.4990458Z             {
2026-06-22T02:37:07.4990587Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4990696Z               "line": 174
2026-06-22T02:37:07.4990798Z             }
2026-06-22T02:37:07.4990902Z           ]
2026-06-22T02:37:07.4991001Z         },
2026-06-22T02:37:07.4991108Z         "int": {
2026-06-22T02:37:07.4991216Z           "complete": true,
2026-06-22T02:37:07.4991326Z           "evidence": [
2026-06-22T02:37:07.4991427Z             {
2026-06-22T02:37:07.4991593Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:37:07.4991804Z               "line": 10
2026-06-22T02:37:07.4991902Z             },
2026-06-22T02:37:07.4992013Z             {
2026-06-22T02:37:07.4992161Z               "path": "crates/spt-msg/tests/killer_quickstart.rs",
2026-06-22T02:37:07.4992275Z               "line": 56
2026-06-22T02:37:07.4992362Z             }
2026-06-22T02:37:07.4992471Z           ]
2026-06-22T02:37:07.4992574Z         },
2026-06-22T02:37:07.4992688Z         "unit": {
2026-06-22T02:37:07.4992809Z           "complete": true,
2026-06-22T02:37:07.4992912Z           "evidence": [
2026-06-22T02:37:07.4993023Z             {
2026-06-22T02:37:07.4993255Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4993371Z               "line": 228
2026-06-22T02:37:07.4993476Z             },
2026-06-22T02:37:07.4993580Z             {
2026-06-22T02:37:07.4993719Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4993824Z               "line": 247
2026-06-22T02:37:07.4993933Z             },
2026-06-22T02:37:07.4994034Z             {
2026-06-22T02:37:07.4994177Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.4994282Z               "line": 270
2026-06-22T02:37:07.4994392Z             }
2026-06-22T02:37:07.4994501Z           ]
2026-06-22T02:37:07.4994601Z         }
2026-06-22T02:37:07.4994702Z       }
2026-06-22T02:37:07.4994805Z     },
2026-06-22T02:37:07.4994909Z     {
2026-06-22T02:37:07.4995015Z       "id": "REQ-MSG-4",
2026-06-22T02:37:07.4995900Z       "title": "Listener stream stdout emits EVENT envelope lines (sister-format, ADR-0001): parse the __REPLY_TO__ frame, pass pre-formed typed envelopes through verbatim (no double-wrap), compose <EVENT type=\"msg\" from=…> otherwise, chunk oversized lines into EVENT-PART",
2026-06-22T02:37:07.4996099Z       "requiredStages": [
2026-06-22T02:37:07.4996210Z         "impl",
2026-06-22T02:37:07.4996323Z         "unit",
2026-06-22T02:37:07.4996432Z         "int"
2026-06-22T02:37:07.4996553Z       ],
2026-06-22T02:37:07.4996652Z       "stages": {
2026-06-22T02:37:07.4996767Z         "doc": {
2026-06-22T02:37:07.4996887Z           "complete": false,
2026-06-22T02:37:07.4997000Z           "evidence": []
2026-06-22T02:37:07.4997110Z         },
2026-06-22T02:37:07.4997212Z         "impl": {
2026-06-22T02:37:07.4997329Z           "complete": true,
2026-06-22T02:37:07.4997440Z           "evidence": [
2026-06-22T02:37:07.4997541Z             {
2026-06-22T02:37:07.5001547Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5001701Z               "line": 19
2026-06-22T02:37:07.5001805Z             },
2026-06-22T02:37:07.5001905Z             {
2026-06-22T02:37:07.5002072Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5002186Z               "line": 46
2026-06-22T02:37:07.5002287Z             },
2026-06-22T02:37:07.5002406Z             {
2026-06-22T02:37:07.5002544Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5002655Z               "line": 532
2026-06-22T02:37:07.5002763Z             },
2026-06-22T02:37:07.5002863Z             {
2026-06-22T02:37:07.5002998Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5003120Z               "line": 3110
2026-06-22T02:37:07.5003229Z             }
2026-06-22T02:37:07.5003321Z           ]
2026-06-22T02:37:07.5003430Z         },
2026-06-22T02:37:07.5003535Z         "int": {
2026-06-22T02:37:07.5003655Z           "complete": true,
2026-06-22T02:37:07.5003768Z           "evidence": [
2026-06-22T02:37:07.5003864Z             {
2026-06-22T02:37:07.5004021Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:37:07.5004135Z               "line": 98
2026-06-22T02:37:07.5004237Z             },
2026-06-22T02:37:07.5004336Z             {
2026-06-22T02:37:07.5004474Z               "path": "crates/spt/tests/quickstart_e2e.rs",
2026-06-22T02:37:07.5004594Z               "line": 128
2026-06-22T02:37:07.5004688Z             }
2026-06-22T02:37:07.5004798Z           ]
2026-06-22T02:37:07.5005070Z         },
2026-06-22T02:37:07.5005186Z         "unit": {
2026-06-22T02:37:07.5005299Z           "complete": true,
2026-06-22T02:37:07.5005417Z           "evidence": [
2026-06-22T02:37:07.5005517Z             {
2026-06-22T02:37:07.5005654Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5005768Z               "line": 68
2026-06-22T02:37:07.5005863Z             },
2026-06-22T02:37:07.5005973Z             {
2026-06-22T02:37:07.5006116Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5006231Z               "line": 79
2026-06-22T02:37:07.5006335Z             },
2026-06-22T02:37:07.5006440Z             {
2026-06-22T02:37:07.5006683Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5006794Z               "line": 90
2026-06-22T02:37:07.5006898Z             },
2026-06-22T02:37:07.5007002Z             {
2026-06-22T02:37:07.5007137Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5007256Z               "line": 151
2026-06-22T02:37:07.5007365Z             }
2026-06-22T02:37:07.5007476Z           ]
2026-06-22T02:37:07.5007574Z         }
2026-06-22T02:37:07.5007680Z       }
2026-06-22T02:37:07.5007786Z     },
2026-06-22T02:37:07.5007884Z     {
2026-06-22T02:37:07.5008005Z       "id": "REQ-MSG-5",
2026-06-22T02:37:07.5008755Z       "title": "user-msg envelope kind + daemon identity gate: a Gateway endpoint / the local user's CLI author user-msg (the user's authority); agent-family senders re-stamped to plain msg; identity-gated never payload-trusted (KH 7.3/7.5); wire-additive (N-1 receivers tolerate the new type)",
2026-06-22T02:37:07.5008869Z       "requiredStages": [
2026-06-22T02:37:07.5009051Z         "doc",
2026-06-22T02:37:07.5009151Z         "impl",
2026-06-22T02:37:07.5009259Z         "unit"
2026-06-22T02:37:07.5009370Z       ],
2026-06-22T02:37:07.5009475Z       "stages": {
2026-06-22T02:37:07.5009583Z         "doc": {
2026-06-22T02:37:07.5009704Z           "complete": true,
2026-06-22T02:37:07.5009808Z           "evidence": [
2026-06-22T02:37:07.5009913Z             {
2026-06-22T02:37:07.5010029Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5010136Z               "line": 231
2026-06-22T02:37:07.5010237Z             }
2026-06-22T02:37:07.5010343Z           ]
2026-06-22T02:37:07.5010456Z         },
2026-06-22T02:37:07.5010557Z         "impl": {
2026-06-22T02:37:07.5010682Z           "complete": true,
2026-06-22T02:37:07.5010780Z           "evidence": [
2026-06-22T02:37:07.5010889Z             {
2026-06-22T02:37:07.5011027Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:37:07.5011140Z               "line": 60
2026-06-22T02:37:07.5011240Z             },
2026-06-22T02:37:07.5011345Z             {
2026-06-22T02:37:07.5011492Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5011603Z               "line": 126
2026-06-22T02:37:07.5011712Z             },
2026-06-22T02:37:07.5011812Z             {
2026-06-22T02:37:07.5011956Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5012060Z               "line": 135
2026-06-22T02:37:07.5012169Z             },
2026-06-22T02:37:07.5012280Z             {
2026-06-22T02:37:07.5012413Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5012518Z               "line": 149
2026-06-22T02:37:07.5012627Z             },
2026-06-22T02:37:07.5012728Z             {
2026-06-22T02:37:07.5012862Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5012970Z               "line": 178
2026-06-22T02:37:07.5013066Z             },
2026-06-22T02:37:07.5013177Z             {
2026-06-22T02:37:07.5013304Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5013419Z               "line": 2802
2026-06-22T02:37:07.5013511Z             }
2026-06-22T02:37:07.5013614Z           ]
2026-06-22T02:37:07.5013709Z         },
2026-06-22T02:37:07.5013813Z         "int": {
2026-06-22T02:37:07.5013920Z           "complete": true,
2026-06-22T02:37:07.5014028Z           "evidence": [
2026-06-22T02:37:07.5014243Z             {
2026-06-22T02:37:07.5014390Z               "path": "crates/spt/tests/gateway_e2e.rs",
2026-06-22T02:37:07.5014496Z               "line": 19
2026-06-22T02:37:07.5014601Z             }
2026-06-22T02:37:07.5014709Z           ]
2026-06-22T02:37:07.5014811Z         },
2026-06-22T02:37:07.5014915Z         "unit": {
2026-06-22T02:37:07.5015034Z           "complete": true,
2026-06-22T02:37:07.5015140Z           "evidence": [
2026-06-22T02:37:07.5015244Z             {
2026-06-22T02:37:07.5015373Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:37:07.5015479Z               "line": 192
2026-06-22T02:37:07.5015578Z             },
2026-06-22T02:37:07.5015775Z             {
2026-06-22T02:37:07.5015930Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:37:07.5016044Z               "line": 154
2026-06-22T02:37:07.5016158Z             },
2026-06-22T02:37:07.5016261Z             {
2026-06-22T02:37:07.5016400Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5016524Z               "line": 122
2026-06-22T02:37:07.5016628Z             },
2026-06-22T02:37:07.5016733Z             {
2026-06-22T02:37:07.5016862Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5016966Z               "line": 452
2026-06-22T02:37:07.5017073Z             },
2026-06-22T02:37:07.5017182Z             {
2026-06-22T02:37:07.5017315Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5017425Z               "line": 501
2026-06-22T02:37:07.5017535Z             },
2026-06-22T02:37:07.5017639Z             {
2026-06-22T02:37:07.5017773Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5017901Z               "line": 517
2026-06-22T02:37:07.5018007Z             },
2026-06-22T02:37:07.5018116Z             {
2026-06-22T02:37:07.5018245Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5018351Z               "line": 536
2026-06-22T02:37:07.5018459Z             },
2026-06-22T02:37:07.5018555Z             {
2026-06-22T02:37:07.5018680Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5018797Z               "line": 7660
2026-06-22T02:37:07.5018906Z             }
2026-06-22T02:37:07.5019091Z           ]
2026-06-22T02:37:07.5019195Z         }
2026-06-22T02:37:07.5019300Z       }
2026-06-22T02:37:07.5019415Z     },
2026-06-22T02:37:07.5019519Z     {
2026-06-22T02:37:07.5019640Z       "id": "REQ-MSG-6",
2026-06-22T02:37:07.5021279Z       "title": "cross-node Gateway user-msg honored via advertised endpoint_type: a user-msg from a Gateway-typed origin survives the receive_wan funnel as user-msg (vs the fail-closed re-stamp), keyed on the QUIC-handshake-proven origin node (never wire `from`). Trust boundary = subnet membership (operator-ratified 2026-06-13); no defense against an in-subnet member forging the type. Instance.endpoint_type is an additive serde-default field extending REQ-INST-7's data model. Absent/unknown type → re-stamp (N-1 rollout grace)",
2026-06-22T02:37:07.5021421Z       "requiredStages": [
2026-06-22T02:37:07.5021521Z         "doc",
2026-06-22T02:37:07.5021634Z         "impl",
2026-06-22T02:37:07.5021743Z         "unit"
2026-06-22T02:37:07.5021843Z       ],
2026-06-22T02:37:07.5021953Z       "stages": {
2026-06-22T02:37:07.5022052Z         "doc": {
2026-06-22T02:37:07.5022163Z           "complete": true,
2026-06-22T02:37:07.5022278Z           "evidence": [
2026-06-22T02:37:07.5022381Z             {
2026-06-22T02:37:07.5022497Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5022611Z               "line": 234
2026-06-22T02:37:07.5022710Z             }
2026-06-22T02:37:07.5022826Z           ]
2026-06-22T02:37:07.5022930Z         },
2026-06-22T02:37:07.5023035Z         "impl": {
2026-06-22T02:37:07.5023141Z           "complete": true,
2026-06-22T02:37:07.5023250Z           "evidence": [
2026-06-22T02:37:07.5023359Z             {
2026-06-22T02:37:07.5023517Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5023732Z               "line": 177
2026-06-22T02:37:07.5023836Z             },
2026-06-22T02:37:07.5023946Z             {
2026-06-22T02:37:07.5024109Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5024216Z               "line": 428
2026-06-22T02:37:07.5024325Z             },
2026-06-22T02:37:07.5024427Z             {
2026-06-22T02:37:07.5024583Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5024684Z               "line": 451
2026-06-22T02:37:07.5024794Z             },
2026-06-22T02:37:07.5024903Z             {
2026-06-22T02:37:07.5025028Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:37:07.5025241Z               "line": 89
2026-06-22T02:37:07.5025337Z             },
2026-06-22T02:37:07.5025433Z             {
2026-06-22T02:37:07.5025585Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5025687Z               "line": 155
2026-06-22T02:37:07.5025795Z             }
2026-06-22T02:37:07.5025885Z           ]
2026-06-22T02:37:07.5025987Z         },
2026-06-22T02:37:07.5026086Z         "int": {
2026-06-22T02:37:07.5026205Z           "complete": false,
2026-06-22T02:37:07.5026326Z           "evidence": []
2026-06-22T02:37:07.5026438Z         },
2026-06-22T02:37:07.5026547Z         "unit": {
2026-06-22T02:37:07.5026671Z           "complete": true,
2026-06-22T02:37:07.5026788Z           "evidence": [
2026-06-22T02:37:07.5026892Z             {
2026-06-22T02:37:07.5027046Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5027159Z               "line": 1746
2026-06-22T02:37:07.5027270Z             },
2026-06-22T02:37:07.5027375Z             {
2026-06-22T02:37:07.5027512Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:37:07.5027623Z               "line": 219
2026-06-22T02:37:07.5027723Z             }
2026-06-22T02:37:07.5027831Z           ]
2026-06-22T02:37:07.5027933Z         }
2026-06-22T02:37:07.5028042Z       }
2026-06-22T02:37:07.5028146Z     },
2026-06-22T02:37:07.5028243Z     {
2026-06-22T02:37:07.5028371Z       "id": "REQ-MSG-ENVELOPE",
2026-06-22T02:37:07.5032076Z       "title": "The <EVENT type=\"msg\" from=…>body</EVENT> envelope (spt-proto::event, the ADR-0001 grammar) is the SOLE canonical arriving-message format at EVERY harness arriving-message surface on an AGENT perch — api listen AND api poll/worker-poll, byte-identical (reverses REQ-MSG-4's 'hook drains keep the raw frame by contract'). SCOPE CARVE-OUT: the shell-command relay (api poll <shell-id> --link, cmd_poll_shell) is a distinct internal transport carrying RAW MAC'd stamped frames the shell child consumes verbatim — NOT an arriving-message surface, deliberately EXEMPT from <EVENT> composition (notify_shell_e2e guards this boundary). __REPLY_TO__ — mis-elevated during the clean-room port to a fake ADR-0001 'stable wire format' (spt-msg/wire.rs, lib.rs) — is REMOVED entirely (spool format_row, the spt-msg TCP frame, emit parse_frame); (from, body) carried structurally, <EVENT> composed once at the delivery boundary. No legacy sister-interop (spt-core never required it). Reply-correlation rebinds onto the structural from / <EVENT from=…> attribute (ADR-0009 access-gate + ADR-0012 Psyche/spt-live reply-target). Self-delimiting by construction → finding F-002 (non-self-delimiting multi-message poll) dissolves. ADR-0020.",
2026-06-22T02:37:07.5032245Z       "requiredStages": [
2026-06-22T02:37:07.5032350Z         "doc",
2026-06-22T02:37:07.5032461Z         "impl",
2026-06-22T02:37:07.5032565Z         "unit",
2026-06-22T02:37:07.5032675Z         "int"
2026-06-22T02:37:07.5032780Z       ],
2026-06-22T02:37:07.5032870Z       "stages": {
2026-06-22T02:37:07.5032989Z         "doc": {
2026-06-22T02:37:07.5033095Z           "complete": true,
2026-06-22T02:37:07.5033209Z           "evidence": [
2026-06-22T02:37:07.5033309Z             {
2026-06-22T02:37:07.5033576Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T02:37:07.5033682Z               "line": 47
2026-06-22T02:37:07.5033890Z             }
2026-06-22T02:37:07.5033997Z           ]
2026-06-22T02:37:07.5034096Z         },
2026-06-22T02:37:07.5034205Z         "impl": {
2026-06-22T02:37:07.5034316Z           "complete": true,
2026-06-22T02:37:07.5034424Z           "evidence": [
2026-06-22T02:37:07.5034520Z             {
2026-06-22T02:37:07.5034660Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5034772Z               "line": 20
2026-06-22T02:37:07.5034876Z             },
2026-06-22T02:37:07.5034987Z             {
2026-06-22T02:37:07.5035115Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5035224Z               "line": 33
2026-06-22T02:37:07.5035430Z             },
2026-06-22T02:37:07.5035524Z             {
2026-06-22T02:37:07.5035659Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5035759Z               "line": 47
2026-06-22T02:37:07.5035878Z             },
2026-06-22T02:37:07.5035983Z             {
2026-06-22T02:37:07.5036135Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5036251Z               "line": 58
2026-06-22T02:37:07.5036364Z             },
2026-06-22T02:37:07.5036479Z             {
2026-06-22T02:37:07.5036608Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.5036726Z               "line": 14
2026-06-22T02:37:07.5036832Z             },
2026-06-22T02:37:07.5036942Z             {
2026-06-22T02:37:07.5037078Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.5037183Z               "line": 27
2026-06-22T02:37:07.5037292Z             },
2026-06-22T02:37:07.5037396Z             {
2026-06-22T02:37:07.5037530Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.5037640Z               "line": 40
2026-06-22T02:37:07.5037748Z             },
2026-06-22T02:37:07.5037878Z             {
2026-06-22T02:37:07.5038025Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.5038145Z               "line": 92
2026-06-22T02:37:07.5038255Z             },
2026-06-22T02:37:07.5038359Z             {
2026-06-22T02:37:07.5038493Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5038607Z               "line": 143
2026-06-22T02:37:07.5038706Z             },
2026-06-22T02:37:07.5038813Z             {
2026-06-22T02:37:07.5039109Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5039217Z               "line": 216
2026-06-22T02:37:07.5039327Z             },
2026-06-22T02:37:07.5039443Z             {
2026-06-22T02:37:07.5039579Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5039685Z               "line": 533
2026-06-22T02:37:07.5039790Z             },
2026-06-22T02:37:07.5039899Z             {
2026-06-22T02:37:07.5040046Z               "path": "crates/spt/src/api/worker.rs",
2026-06-22T02:37:07.5040159Z               "line": 78
2026-06-22T02:37:07.5040267Z             },
2026-06-22T02:37:07.5040363Z             {
2026-06-22T02:37:07.5040492Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5040610Z               "line": 3111
2026-06-22T02:37:07.5040717Z             }
2026-06-22T02:37:07.5040821Z           ]
2026-06-22T02:37:07.5040930Z         },
2026-06-22T02:37:07.5041041Z         "int": {
2026-06-22T02:37:07.5041150Z           "complete": true,
2026-06-22T02:37:07.5041268Z           "evidence": [
2026-06-22T02:37:07.5041370Z             {
2026-06-22T02:37:07.5041527Z               "path": "crates/spt/tests/poll_envelope_e2e.rs",
2026-06-22T02:37:07.5041636Z               "line": 15
2026-06-22T02:37:07.5041737Z             }
2026-06-22T02:37:07.5041851Z           ]
2026-06-22T02:37:07.5041946Z         },
2026-06-22T02:37:07.5042052Z         "unit": {
2026-06-22T02:37:07.5042165Z           "complete": true,
2026-06-22T02:37:07.5042281Z           "evidence": [
2026-06-22T02:37:07.5042386Z             {
2026-06-22T02:37:07.5042527Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5042641Z               "line": 102
2026-06-22T02:37:07.5042877Z             },
2026-06-22T02:37:07.5042982Z             {
2026-06-22T02:37:07.5043116Z               "path": "crates/spt-msg/src/emit.rs",
2026-06-22T02:37:07.5043235Z               "line": 137
2026-06-22T02:37:07.5043331Z             },
2026-06-22T02:37:07.5043440Z             {
2026-06-22T02:37:07.5043574Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.5043688Z               "line": 98
2026-06-22T02:37:07.5043792Z             },
2026-06-22T02:37:07.5043894Z             {
2026-06-22T02:37:07.5044026Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.5044141Z               "line": 106
2026-06-22T02:37:07.5044346Z             },
2026-06-22T02:37:07.5044460Z             {
2026-06-22T02:37:07.5044585Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.5044703Z               "line": 113
2026-06-22T02:37:07.5044809Z             },
2026-06-22T02:37:07.5044910Z             {
2026-06-22T02:37:07.5045037Z               "path": "crates/spt-msg/src/wire.rs",
2026-06-22T02:37:07.5045163Z               "line": 122
2026-06-22T02:37:07.5045272Z             }
2026-06-22T02:37:07.5045370Z           ]
2026-06-22T02:37:07.5045475Z         }
2026-06-22T02:37:07.5045576Z       }
2026-06-22T02:37:07.5045685Z     },
2026-06-22T02:37:07.5045784Z     {
2026-06-22T02:37:07.5045928Z       "id": "REQ-MSG-IDLE-TRANSLATION-BINARY",
2026-06-22T02:37:07.5050928Z       "title": "spt-hosted idle message delivery via an adapter TRANSLATION BINARY (ADR-0022). New opt-in manifest section `[message-idle-translation-binary]` = a TABLE carrying a `path` scalar (doyle OPT-B ruling: modeled as a table, not a bare top-level scalar, so a preceding section cannot silently absorb it + N+1 extensible; spt-core does NOT deny_unknown_fields, so a future key degrades gracefully); spt-core LIFECYCLE-manages it (spawn when the endpoint comes up, terminate when it goes down). The binary is a PURE stdin→stdout filter; spt-core owns EVERY PTY write. stdin (JSON-lines): `{type:\"init\",endpoint_id,node}` first · `{type:\"event\",envelope:\"<EVENT…>\"}` per inbound message (ADR-0020 envelope) · `{type:\"input\"}` content-free ping on each operator keystroke (binary tracks user-idle for its own idle-gated buffering; PTY input content NOT duplicated). stdout (JSON-lines): keystroke-commands `{key:…}`/`{delay_ms:…}`/`{text:…}` (extensible). spt-core applies the emitted sequence to the broker PTY ATOMICALLY (the W1 coordination — REQ-HAZARD-INJECT-CONTROL-COEXIST). The daemon poll feed is the ONE idle substrate for both topologies (Q1=A): harness-hosted consumer = the Monitor child, spt-hosted consumer = this binary; spt-core PREFERS a perch's poll listener if one exists (so spt-hosted can run a listener AND keep `spt rc`). Idle-only; busy/mid-turn = adapter hook-injection. Closes the current grounding gap: `api bind` registers no listener port → a listener-less spt-hosted perch SPOOLS inbound (only spooling+adapter-poll works today) → this delivers real inbound into the PTY. The v0.11.0 raw inject is the degenerate `{text:payload}{key:enter}` case. (v0.13.0)",
2026-06-22T02:37:07.5051114Z       "requiredStages": [
2026-06-22T02:37:07.5051223Z         "doc",
2026-06-22T02:37:07.5051334Z         "impl",
2026-06-22T02:37:07.5051443Z         "unit",
2026-06-22T02:37:07.5051553Z         "int"
2026-06-22T02:37:07.5051658Z       ],
2026-06-22T02:37:07.5051762Z       "stages": {
2026-06-22T02:37:07.5051872Z         "doc": {
2026-06-22T02:37:07.5051992Z           "complete": true,
2026-06-22T02:37:07.5052101Z           "evidence": [
2026-06-22T02:37:07.5052201Z             {
2026-06-22T02:37:07.5052373Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T02:37:07.5052487Z               "line": 277
2026-06-22T02:37:07.5052593Z             },
2026-06-22T02:37:07.5052697Z             {
2026-06-22T02:37:07.5052826Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.5052936Z               "line": 198
2026-06-22T02:37:07.5053044Z             }
2026-06-22T02:37:07.5053244Z           ]
2026-06-22T02:37:07.5053352Z         },
2026-06-22T02:37:07.5053461Z         "impl": {
2026-06-22T02:37:07.5053572Z           "complete": true,
2026-06-22T02:37:07.5053690Z           "evidence": [
2026-06-22T02:37:07.5053790Z             {
2026-06-22T02:37:07.5053938Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.5054052Z               "line": 1026
2026-06-22T02:37:07.5054158Z             },
2026-06-22T02:37:07.5054258Z             {
2026-06-22T02:37:07.5054420Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5054530Z               "line": 23
2026-06-22T02:37:07.5054630Z             },
2026-06-22T02:37:07.5054836Z             {
2026-06-22T02:37:07.5054987Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5055108Z               "line": 91
2026-06-22T02:37:07.5055211Z             },
2026-06-22T02:37:07.5055311Z             {
2026-06-22T02:37:07.5055460Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5055582Z               "line": 239
2026-06-22T02:37:07.5055694Z             },
2026-06-22T02:37:07.5055804Z             {
2026-06-22T02:37:07.5055954Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5056059Z               "line": 287
2026-06-22T02:37:07.5056160Z             },
2026-06-22T02:37:07.5056268Z             {
2026-06-22T02:37:07.5056422Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5056550Z               "line": 311
2026-06-22T02:37:07.5056655Z             },
2026-06-22T02:37:07.5056770Z             {
2026-06-22T02:37:07.5056917Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5057042Z               "line": 60
2026-06-22T02:37:07.5057155Z             },
2026-06-22T02:37:07.5057260Z             {
2026-06-22T02:37:07.5057409Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5057518Z               "line": 889
2026-06-22T02:37:07.5057628Z             }
2026-06-22T02:37:07.5057724Z           ]
2026-06-22T02:37:07.5057832Z         },
2026-06-22T02:37:07.5057938Z         "int": {
2026-06-22T02:37:07.5058049Z           "complete": true,
2026-06-22T02:37:07.5058166Z           "evidence": [
2026-06-22T02:37:07.5058270Z             {
2026-06-22T02:37:07.5058449Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.5058558Z               "line": 1127
2026-06-22T02:37:07.5058669Z             },
2026-06-22T02:37:07.5058774Z             {
2026-06-22T02:37:07.5059027Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.5059150Z               "line": 1232
2026-06-22T02:37:07.5059260Z             },
2026-06-22T02:37:07.5059370Z             {
2026-06-22T02:37:07.5059546Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.5059651Z               "line": 1300
2026-06-22T02:37:07.5059765Z             },
2026-06-22T02:37:07.5059865Z             {
2026-06-22T02:37:07.5060042Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.5060147Z               "line": 1393
2026-06-22T02:37:07.5060253Z             }
2026-06-22T02:37:07.5060361Z           ]
2026-06-22T02:37:07.5060466Z         },
2026-06-22T02:37:07.5060573Z         "unit": {
2026-06-22T02:37:07.5060680Z           "complete": true,
2026-06-22T02:37:07.5060800Z           "evidence": [
2026-06-22T02:37:07.5060907Z             {
2026-06-22T02:37:07.5061057Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.5061161Z               "line": 270
2026-06-22T02:37:07.5061256Z             },
2026-06-22T02:37:07.5061364Z             {
2026-06-22T02:37:07.5061517Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5061641Z               "line": 350
2026-06-22T02:37:07.5061740Z             },
2026-06-22T02:37:07.5061851Z             {
2026-06-22T02:37:07.5061993Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5062227Z               "line": 381
2026-06-22T02:37:07.5062332Z             },
2026-06-22T02:37:07.5062433Z             {
2026-06-22T02:37:07.5062580Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5062690Z               "line": 411
2026-06-22T02:37:07.5062796Z             },
2026-06-22T02:37:07.5062904Z             {
2026-06-22T02:37:07.5063052Z               "path": "crates/spt-daemon/src/translation.rs",
2026-06-22T02:37:07.5063153Z               "line": 440
2026-06-22T02:37:07.5063257Z             },
2026-06-22T02:37:07.5063362Z             {
2026-06-22T02:37:07.5063506Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5063713Z               "line": 1181
2026-06-22T02:37:07.5063814Z             }
2026-06-22T02:37:07.5063917Z           ]
2026-06-22T02:37:07.5064016Z         }
2026-06-22T02:37:07.5064117Z       }
2026-06-22T02:37:07.5064222Z     },
2026-06-22T02:37:07.5064326Z     {
2026-06-22T02:37:07.5064442Z       "id": "REQ-NET-1",
2026-06-22T02:37:07.5064651Z       "title": "WAN messaging first-class, behind default-on net feature flag",
2026-06-22T02:37:07.5064756Z       "requiredStages": [
2026-06-22T02:37:07.5064875Z         "impl",
2026-06-22T02:37:07.5064980Z         "unit",
2026-06-22T02:37:07.5065085Z         "int"
2026-06-22T02:37:07.5065185Z       ],
2026-06-22T02:37:07.5065295Z       "stages": {
2026-06-22T02:37:07.5065405Z         "doc": {
2026-06-22T02:37:07.5065514Z           "complete": false,
2026-06-22T02:37:07.5065633Z           "evidence": []
2026-06-22T02:37:07.5065729Z         },
2026-06-22T02:37:07.5065843Z         "impl": {
2026-06-22T02:37:07.5065953Z           "complete": true,
2026-06-22T02:37:07.5066063Z           "evidence": [
2026-06-22T02:37:07.5066172Z             {
2026-06-22T02:37:07.5066321Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5066429Z               "line": 54
2026-06-22T02:37:07.5066538Z             },
2026-06-22T02:37:07.5066652Z             {
2026-06-22T02:37:07.5066801Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5066929Z               "line": 594
2026-06-22T02:37:07.5067034Z             },
2026-06-22T02:37:07.5067139Z             {
2026-06-22T02:37:07.5067283Z               "path": "crates/spt-daemon/src/wan.rs",
2026-06-22T02:37:07.5067397Z               "line": 130
2026-06-22T02:37:07.5067510Z             },
2026-06-22T02:37:07.5067612Z             {
2026-06-22T02:37:07.5067764Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5067883Z               "line": 97
2026-06-22T02:37:07.5067984Z             },
2026-06-22T02:37:07.5068097Z             {
2026-06-22T02:37:07.5068236Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5068341Z               "line": 159
2026-06-22T02:37:07.5068450Z             },
2026-06-22T02:37:07.5068551Z             {
2026-06-22T02:37:07.5068702Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5068820Z               "line": 175
2026-06-22T02:37:07.5068931Z             },
2026-06-22T02:37:07.5069105Z             {
2026-06-22T02:37:07.5069258Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5069372Z               "line": 190
2026-06-22T02:37:07.5069477Z             },
2026-06-22T02:37:07.5069573Z             {
2026-06-22T02:37:07.5069715Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5069820Z               "line": 271
2026-06-22T02:37:07.5069925Z             },
2026-06-22T02:37:07.5070044Z             {
2026-06-22T02:37:07.5070188Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5070302Z               "line": 306
2026-06-22T02:37:07.5070416Z             },
2026-06-22T02:37:07.5070522Z             {
2026-06-22T02:37:07.5070673Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5070784Z               "line": 312
2026-06-22T02:37:07.5070893Z             },
2026-06-22T02:37:07.5071104Z             {
2026-06-22T02:37:07.5071240Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5071361Z               "line": 318
2026-06-22T02:37:07.5071462Z             },
2026-06-22T02:37:07.5071569Z             {
2026-06-22T02:37:07.5071702Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5071817Z               "line": 334
2026-06-22T02:37:07.5071924Z             },
2026-06-22T02:37:07.5072029Z             {
2026-06-22T02:37:07.5072187Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5072296Z               "line": 354
2026-06-22T02:37:07.5072402Z             },
2026-06-22T02:37:07.5072620Z             {
2026-06-22T02:37:07.5072773Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:37:07.5072873Z               "line": 35
2026-06-22T02:37:07.5072983Z             },
2026-06-22T02:37:07.5073070Z             {
2026-06-22T02:37:07.5073211Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:37:07.5073341Z               "line": 85
2026-06-22T02:37:07.5073445Z             },
2026-06-22T02:37:07.5073555Z             {
2026-06-22T02:37:07.5073699Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.5073812Z               "line": 138
2026-06-22T02:37:07.5073917Z             },
2026-06-22T02:37:07.5074019Z             {
2026-06-22T02:37:07.5074160Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5074269Z               "line": 2953
2026-06-22T02:37:07.5074374Z             },
2026-06-22T02:37:07.5074482Z             {
2026-06-22T02:37:07.5074615Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.5074730Z               "line": 17
2026-06-22T02:37:07.5074834Z             }
2026-06-22T02:37:07.5074929Z           ]
2026-06-22T02:37:07.5075035Z         },
2026-06-22T02:37:07.5075139Z         "int": {
2026-06-22T02:37:07.5075259Z           "complete": true,
2026-06-22T02:37:07.5075369Z           "evidence": [
2026-06-22T02:37:07.5075478Z             {
2026-06-22T02:37:07.5075626Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5075731Z               "line": 341
2026-06-22T02:37:07.5075840Z             },
2026-06-22T02:37:07.5075946Z             {
2026-06-22T02:37:07.5076093Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5076203Z               "line": 675
2026-06-22T02:37:07.5076317Z             },
2026-06-22T02:37:07.5076418Z             {
2026-06-22T02:37:07.5076567Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5076689Z               "line": 973
2026-06-22T02:37:07.5076804Z             }
2026-06-22T02:37:07.5076919Z           ]
2026-06-22T02:37:07.5077022Z         },
2026-06-22T02:37:07.5077141Z         "unit": {
2026-06-22T02:37:07.5077252Z           "complete": true,
2026-06-22T02:37:07.5077366Z           "evidence": [
2026-06-22T02:37:07.5077479Z             {
2026-06-22T02:37:07.5077628Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5077751Z               "line": 651
2026-06-22T02:37:07.5077847Z             },
2026-06-22T02:37:07.5077947Z             {
2026-06-22T02:37:07.5078090Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5078200Z               "line": 686
2026-06-22T02:37:07.5078310Z             },
2026-06-22T02:37:07.5078404Z             {
2026-06-22T02:37:07.5078558Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5078686Z               "line": 940
2026-06-22T02:37:07.5078797Z             },
2026-06-22T02:37:07.5078896Z             {
2026-06-22T02:37:07.5079135Z               "path": "crates/spt-daemon/tests/wanmsg.rs",
2026-06-22T02:37:07.5079248Z               "line": 201
2026-06-22T02:37:07.5079348Z             },
2026-06-22T02:37:07.5079476Z             {
2026-06-22T02:37:07.5079627Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5079742Z               "line": 442
2026-06-22T02:37:07.5079960Z             },
2026-06-22T02:37:07.5080061Z             {
2026-06-22T02:37:07.5080204Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5080313Z               "line": 456
2026-06-22T02:37:07.5080414Z             },
2026-06-22T02:37:07.5080514Z             {
2026-06-22T02:37:07.5080666Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5080767Z               "line": 475
2026-06-22T02:37:07.5080881Z             },
2026-06-22T02:37:07.5080985Z             {
2026-06-22T02:37:07.5081120Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:37:07.5081238Z               "line": 120
2026-06-22T02:37:07.5081544Z             },
2026-06-22T02:37:07.5081645Z             {
2026-06-22T02:37:07.5081777Z               "path": "crates/spt-net/src/net/wanmsg.rs",
2026-06-22T02:37:07.5081892Z               "line": 163
2026-06-22T02:37:07.5082003Z             },
2026-06-22T02:37:07.5082102Z             {
2026-06-22T02:37:07.5082257Z               "path": "crates/spt-store/src/spool.rs",
2026-06-22T02:37:07.5082368Z               "line": 530
2026-06-22T02:37:07.5082479Z             },
2026-06-22T02:37:07.5082589Z             {
2026-06-22T02:37:07.5082723Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.5082837Z               "line": 616
2026-06-22T02:37:07.5082942Z             },
2026-06-22T02:37:07.5083047Z             {
2026-06-22T02:37:07.5083180Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.5083296Z               "line": 1006
2026-06-22T02:37:07.5083386Z             }
2026-06-22T02:37:07.5083490Z           ]
2026-06-22T02:37:07.5083591Z         }
2026-06-22T02:37:07.5083700Z       }
2026-06-22T02:37:07.5083810Z     },
2026-06-22T02:37:07.5083906Z     {
2026-06-22T02:37:07.5084024Z       "id": "REQ-NET-2",
2026-06-22T02:37:07.5084221Z       "title": "n0 relay default + self-host knob + plain-language disclosure",
2026-06-22T02:37:07.5084348Z       "requiredStages": [
2026-06-22T02:37:07.5084454Z         "impl"
2026-06-22T02:37:07.5084550Z       ],
2026-06-22T02:37:07.5084654Z       "stages": {
2026-06-22T02:37:07.5084744Z         "doc": {
2026-06-22T02:37:07.5084853Z           "complete": false,
2026-06-22T02:37:07.5084957Z           "evidence": []
2026-06-22T02:37:07.5085051Z         },
2026-06-22T02:37:07.5085180Z         "impl": {
2026-06-22T02:37:07.5085295Z           "complete": true,
2026-06-22T02:37:07.5085409Z           "evidence": [
2026-06-22T02:37:07.5085514Z             {
2026-06-22T02:37:07.5085657Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.5085766Z               "line": 57
2026-06-22T02:37:07.5085881Z             },
2026-06-22T02:37:07.5085986Z             {
2026-06-22T02:37:07.5086124Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5086234Z               "line": 71
2026-06-22T02:37:07.5086338Z             },
2026-06-22T02:37:07.5086449Z             {
2026-06-22T02:37:07.5086611Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5086724Z               "line": 81
2026-06-22T02:37:07.5086835Z             },
2026-06-22T02:37:07.5086944Z             {
2026-06-22T02:37:07.5087093Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5087202Z               "line": 159
2026-06-22T02:37:07.5087311Z             },
2026-06-22T02:37:07.5087422Z             {
2026-06-22T02:37:07.5087563Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5087677Z               "line": 175
2026-06-22T02:37:07.5087769Z             },
2026-06-22T02:37:07.5087874Z             {
2026-06-22T02:37:07.5088016Z               "path": "crates/spt-net/src/net/endpoint.rs",
2026-06-22T02:37:07.5088146Z               "line": 190
2026-06-22T02:37:07.5088249Z             }
2026-06-22T02:37:07.5088350Z           ]
2026-06-22T02:37:07.5088460Z         },
2026-06-22T02:37:07.5088560Z         "int": {
2026-06-22T02:37:07.5088679Z           "complete": false,
2026-06-22T02:37:07.5088865Z           "evidence": []
2026-06-22T02:37:07.5089061Z         },
2026-06-22T02:37:07.5089170Z         "unit": {
2026-06-22T02:37:07.5089304Z           "complete": true,
2026-06-22T02:37:07.5089414Z           "evidence": [
2026-06-22T02:37:07.5093861Z             {
2026-06-22T02:37:07.5094074Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.5094180Z               "line": 402
2026-06-22T02:37:07.5094294Z             }
2026-06-22T02:37:07.5094404Z           ]
2026-06-22T02:37:07.5094510Z         }
2026-06-22T02:37:07.5094622Z       }
2026-06-22T02:37:07.5094718Z     },
2026-06-22T02:37:07.5094819Z     {
2026-06-22T02:37:07.5094927Z       "id": "REQ-NET-3",
2026-06-22T02:37:07.5095313Z       "title": "Cross-node Psyche sync over P2P replaces gh-repo-sync",
2026-06-22T02:37:07.5095427Z       "requiredStages": [
2026-06-22T02:37:07.5095536Z         "impl",
2026-06-22T02:37:07.5095649Z         "unit"
2026-06-22T02:37:07.5095735Z       ],
2026-06-22T02:37:07.5095851Z       "stages": {
2026-06-22T02:37:07.5095964Z         "doc": {
2026-06-22T02:37:07.5096089Z           "complete": false,
2026-06-22T02:37:07.5096208Z           "evidence": []
2026-06-22T02:37:07.5096312Z         },
2026-06-22T02:37:07.5096423Z         "impl": {
2026-06-22T02:37:07.5096541Z           "complete": true,
2026-06-22T02:37:07.5096655Z           "evidence": [
2026-06-22T02:37:07.5096761Z             {
2026-06-22T02:37:07.5096912Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.5097028Z               "line": 39
2026-06-22T02:37:07.5097128Z             },
2026-06-22T02:37:07.5097227Z             {
2026-06-22T02:37:07.5097372Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.5097509Z               "line": 182
2026-06-22T02:37:07.5097604Z             },
2026-06-22T02:37:07.5097711Z             {
2026-06-22T02:37:07.5097847Z               "path": "crates/spt-daemon/src/sync.rs",
2026-06-22T02:37:07.5097954Z               "line": 333
2026-06-22T02:37:07.5098067Z             },
2026-06-22T02:37:07.5098171Z             {
2026-06-22T02:37:07.5098314Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:37:07.5098424Z               "line": 36
2026-06-22T02:37:07.5098533Z             },
2026-06-22T02:37:07.5098634Z             {
2026-06-22T02:37:07.5098795Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5098910Z               "line": 158
2026-06-22T02:37:07.5099120Z             },
2026-06-22T02:37:07.5099225Z             {
2026-06-22T02:37:07.5099378Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5099515Z               "line": 238
2026-06-22T02:37:07.5099631Z             },
2026-06-22T02:37:07.5099730Z             {
2026-06-22T02:37:07.5099883Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5099993Z               "line": 259
2026-06-22T02:37:07.5100102Z             },
2026-06-22T02:37:07.5100207Z             {
2026-06-22T02:37:07.5100359Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5100478Z               "line": 317
2026-06-22T02:37:07.5100582Z             },
2026-06-22T02:37:07.5100681Z             {
2026-06-22T02:37:07.5100823Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5100939Z               "line": 336
2026-06-22T02:37:07.5101029Z             },
2026-06-22T02:37:07.5101143Z             {
2026-06-22T02:37:07.5101291Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5101400Z               "line": 374
2026-06-22T02:37:07.5101511Z             },
2026-06-22T02:37:07.5101601Z             {
2026-06-22T02:37:07.5101757Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5101868Z               "line": 419
2026-06-22T02:37:07.5101973Z             },
2026-06-22T02:37:07.5102077Z             {
2026-06-22T02:37:07.5102216Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5102330Z               "line": 432
2026-06-22T02:37:07.5102550Z             },
2026-06-22T02:37:07.5102650Z             {
2026-06-22T02:37:07.5102803Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.5102916Z               "line": 29
2026-06-22T02:37:07.5103026Z             },
2026-06-22T02:37:07.5103128Z             {
2026-06-22T02:37:07.5103278Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.5103387Z               "line": 72
2026-06-22T02:37:07.5103497Z             },
2026-06-22T02:37:07.5103605Z             {
2026-06-22T02:37:07.5103743Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.5103848Z               "line": 123
2026-06-22T02:37:07.5104053Z             }
2026-06-22T02:37:07.5104163Z           ]
2026-06-22T02:37:07.5104262Z         },
2026-06-22T02:37:07.5104373Z         "int": {
2026-06-22T02:37:07.5104496Z           "complete": false,
2026-06-22T02:37:07.5104610Z           "evidence": []
2026-06-22T02:37:07.5104716Z         },
2026-06-22T02:37:07.5104825Z         "unit": {
2026-06-22T02:37:07.5104935Z           "complete": true,
2026-06-22T02:37:07.5105046Z           "evidence": [
2026-06-22T02:37:07.5105149Z             {
2026-06-22T02:37:07.5105298Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:37:07.5105403Z               "line": 223
2026-06-22T02:37:07.5105521Z             },
2026-06-22T02:37:07.5105622Z             {
2026-06-22T02:37:07.5105770Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:37:07.5105878Z               "line": 351
2026-06-22T02:37:07.5105978Z             },
2026-06-22T02:37:07.5106087Z             {
2026-06-22T02:37:07.5106219Z               "path": "crates/spt-daemon/tests/sync.rs",
2026-06-22T02:37:07.5106329Z               "line": 504
2026-06-22T02:37:07.5106435Z             },
2026-06-22T02:37:07.5106538Z             {
2026-06-22T02:37:07.5106678Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:37:07.5106791Z               "line": 93
2026-06-22T02:37:07.5106910Z             },
2026-06-22T02:37:07.5107016Z             {
2026-06-22T02:37:07.5107158Z               "path": "crates/spt-net/src/net/sync.rs",
2026-06-22T02:37:07.5107274Z               "line": 142
2026-06-22T02:37:07.5107377Z             },
2026-06-22T02:37:07.5107482Z             {
2026-06-22T02:37:07.5107632Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.5107741Z               "line": 315
2026-06-22T02:37:07.5107836Z             },
2026-06-22T02:37:07.5107965Z             {
2026-06-22T02:37:07.5108107Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.5108242Z               "line": 355
2026-06-22T02:37:07.5108350Z             },
2026-06-22T02:37:07.5108460Z             {
2026-06-22T02:37:07.5108609Z               "path": "crates/spt-store/src/syncmerge.rs",
2026-06-22T02:37:07.5108721Z               "line": 494
2026-06-22T02:37:07.5108831Z             }
2026-06-22T02:37:07.5108927Z           ]
2026-06-22T02:37:07.5109107Z         }
2026-06-22T02:37:07.5109208Z       }
2026-06-22T02:37:07.5109337Z     },
2026-06-22T02:37:07.5109441Z     {
2026-06-22T02:37:07.5109561Z       "id": "REQ-NODE-IDENTITY",
2026-06-22T02:37:07.5109843Z       "title": "Ed25519 identity primitive: keypair, detached sign/verify, stable pubkey<->hex",
2026-06-22T02:37:07.5109961Z       "requiredStages": [
2026-06-22T02:37:07.5110071Z         "impl",
2026-06-22T02:37:07.5110172Z         "unit"
2026-06-22T02:37:07.5110276Z       ],
2026-06-22T02:37:07.5110386Z       "stages": {
2026-06-22T02:37:07.5110492Z         "doc": {
2026-06-22T02:37:07.5110604Z           "complete": false,
2026-06-22T02:37:07.5110714Z           "evidence": []
2026-06-22T02:37:07.5110821Z         },
2026-06-22T02:37:07.5110933Z         "impl": {
2026-06-22T02:37:07.5111056Z           "complete": true,
2026-06-22T02:37:07.5111166Z           "evidence": [
2026-06-22T02:37:07.5111264Z             {
2026-06-22T02:37:07.5111417Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5111659Z               "line": 60
2026-06-22T02:37:07.5111765Z             },
2026-06-22T02:37:07.5111870Z             {
2026-06-22T02:37:07.5112017Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5112128Z               "line": 68
2026-06-22T02:37:07.5112232Z             },
2026-06-22T02:37:07.5112337Z             {
2026-06-22T02:37:07.5112481Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5112590Z               "line": 86
2026-06-22T02:37:07.5112690Z             },
2026-06-22T02:37:07.5112786Z             {
2026-06-22T02:37:07.5112924Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5113133Z               "line": 120
2026-06-22T02:37:07.5113243Z             },
2026-06-22T02:37:07.5113345Z             {
2026-06-22T02:37:07.5113491Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5113601Z               "line": 127
2026-06-22T02:37:07.5113697Z             },
2026-06-22T02:37:07.5113815Z             {
2026-06-22T02:37:07.5113957Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5114066Z               "line": 143
2026-06-22T02:37:07.5114170Z             },
2026-06-22T02:37:07.5114279Z             {
2026-06-22T02:37:07.5114413Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:37:07.5114526Z               "line": 16
2026-06-22T02:37:07.5114633Z             }
2026-06-22T02:37:07.5114733Z           ]
2026-06-22T02:37:07.5114837Z         },
2026-06-22T02:37:07.5114943Z         "int": {
2026-06-22T02:37:07.5115061Z           "complete": false,
2026-06-22T02:37:07.5115170Z           "evidence": []
2026-06-22T02:37:07.5115286Z         },
2026-06-22T02:37:07.5115399Z         "unit": {
2026-06-22T02:37:07.5115504Z           "complete": true,
2026-06-22T02:37:07.5115615Z           "evidence": [
2026-06-22T02:37:07.5115710Z             {
2026-06-22T02:37:07.5115858Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5115983Z               "line": 199
2026-06-22T02:37:07.5116086Z             },
2026-06-22T02:37:07.5116192Z             {
2026-06-22T02:37:07.5116335Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5116453Z               "line": 218
2026-06-22T02:37:07.5116553Z             },
2026-06-22T02:37:07.5116671Z             {
2026-06-22T02:37:07.5116812Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5116918Z               "line": 234
2026-06-22T02:37:07.5117023Z             },
2026-06-22T02:37:07.5117117Z             {
2026-06-22T02:37:07.5117261Z               "path": "crates/spt-proto/src/identity.rs",
2026-06-22T02:37:07.5117370Z               "line": 256
2026-06-22T02:37:07.5117480Z             },
2026-06-22T02:37:07.5117586Z             {
2026-06-22T02:37:07.5117727Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:37:07.5117843Z               "line": 124
2026-06-22T02:37:07.5117942Z             },
2026-06-22T02:37:07.5118047Z             {
2026-06-22T02:37:07.5118187Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:37:07.5118296Z               "line": 140
2026-06-22T02:37:07.5118405Z             },
2026-06-22T02:37:07.5118502Z             {
2026-06-22T02:37:07.5118634Z               "path": "crates/spt-store/src/nodeid.rs",
2026-06-22T02:37:07.5118744Z               "line": 155
2026-06-22T02:37:07.5118855Z             }
2026-06-22T02:37:07.5119025Z           ]
2026-06-22T02:37:07.5119131Z         }
2026-06-22T02:37:07.5119225Z       }
2026-06-22T02:37:07.5119339Z     },
2026-06-22T02:37:07.5119468Z     {
2026-06-22T02:37:07.5119587Z       "id": "REQ-NOTIF-1",
2026-06-22T02:37:07.5119987Z       "title": "Notification primitive: per-subnet replicated spool, seen/dismissed, resurface-at-boundary, subsumes update+consent prompts",
2026-06-22T02:37:07.5120103Z       "requiredStages": [
2026-06-22T02:37:07.5120207Z         "impl",
2026-06-22T02:37:07.5120316Z         "unit",
2026-06-22T02:37:07.5120422Z         "int"
2026-06-22T02:37:07.5120645Z       ],
2026-06-22T02:37:07.5120756Z       "stages": {
2026-06-22T02:37:07.5120865Z         "doc": {
2026-06-22T02:37:07.5120969Z           "complete": false,
2026-06-22T02:37:07.5121076Z           "evidence": []
2026-06-22T02:37:07.5121179Z         },
2026-06-22T02:37:07.5121275Z         "impl": {
2026-06-22T02:37:07.5121386Z           "complete": true,
2026-06-22T02:37:07.5121493Z           "evidence": [
2026-06-22T02:37:07.5121588Z             {
2026-06-22T02:37:07.5121727Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5121844Z               "line": 514
2026-06-22T02:37:07.5121953Z             },
2026-06-22T02:37:07.5122158Z             {
2026-06-22T02:37:07.5122296Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5122411Z               "line": 30
2026-06-22T02:37:07.5122520Z             },
2026-06-22T02:37:07.5122626Z             {
2026-06-22T02:37:07.5122764Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5122882Z               "line": 69
2026-06-22T02:37:07.5122979Z             },
2026-06-22T02:37:07.5123079Z             {
2026-06-22T02:37:07.5123197Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5123308Z               "line": 93
2026-06-22T02:37:07.5123417Z             },
2026-06-22T02:37:07.5123517Z             {
2026-06-22T02:37:07.5123665Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5123775Z               "line": 107
2026-06-22T02:37:07.5123885Z             },
2026-06-22T02:37:07.5123985Z             {
2026-06-22T02:37:07.5124128Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5124244Z               "line": 142
2026-06-22T02:37:07.5124342Z             },
2026-06-22T02:37:07.5124450Z             {
2026-06-22T02:37:07.5124580Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5124696Z               "line": 187
2026-06-22T02:37:07.5124791Z             },
2026-06-22T02:37:07.5124902Z             {
2026-06-22T02:37:07.5125049Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5125154Z               "line": 258
2026-06-22T02:37:07.5125265Z             },
2026-06-22T02:37:07.5125368Z             {
2026-06-22T02:37:07.5125498Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5125608Z               "line": 372
2026-06-22T02:37:07.5125717Z             },
2026-06-22T02:37:07.5125822Z             {
2026-06-22T02:37:07.5125955Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5126074Z               "line": 479
2026-06-22T02:37:07.5126175Z             },
2026-06-22T02:37:07.5126284Z             {
2026-06-22T02:37:07.5126432Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.5126552Z               "line": 24
2026-06-22T02:37:07.5126656Z             },
2026-06-22T02:37:07.5126762Z             {
2026-06-22T02:37:07.5126914Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.5127031Z               "line": 34
2026-06-22T02:37:07.5127132Z             },
2026-06-22T02:37:07.5127231Z             {
2026-06-22T02:37:07.5127368Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.5127483Z               "line": 60
2026-06-22T02:37:07.5127583Z             },
2026-06-22T02:37:07.5127692Z             {
2026-06-22T02:37:07.5127831Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.5127949Z               "line": 82
2026-06-22T02:37:07.5128050Z             },
2026-06-22T02:37:07.5128155Z             {
2026-06-22T02:37:07.5128307Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.5128422Z               "line": 94
2026-06-22T02:37:07.5128531Z             },
2026-06-22T02:37:07.5128636Z             {
2026-06-22T02:37:07.5128789Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.5128894Z               "line": 96
2026-06-22T02:37:07.5129071Z             },
2026-06-22T02:37:07.5129295Z             {
2026-06-22T02:37:07.5129466Z               "path": "crates/spt-daemon/src/pump/notif.rs",
2026-06-22T02:37:07.5129585Z               "line": 44
2026-06-22T02:37:07.5129686Z             },
2026-06-22T02:37:07.5129790Z             {
2026-06-22T02:37:07.5129941Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:37:07.5130047Z               "line": 20
2026-06-22T02:37:07.5130156Z             },
2026-06-22T02:37:07.5130251Z             {
2026-06-22T02:37:07.5130390Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:37:07.5130494Z               "line": 30
2026-06-22T02:37:07.5130600Z             },
2026-06-22T02:37:07.5130809Z             {
2026-06-22T02:37:07.5130944Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:37:07.5131048Z               "line": 50
2026-06-22T02:37:07.5131152Z             },
2026-06-22T02:37:07.5131259Z             {
2026-06-22T02:37:07.5131391Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5131515Z               "line": 28
2026-06-22T02:37:07.5131621Z             },
2026-06-22T02:37:07.5131724Z             {
2026-06-22T02:37:07.5131859Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5131970Z               "line": 126
2026-06-22T02:37:07.5132082Z             },
2026-06-22T02:37:07.5132181Z             {
2026-06-22T02:37:07.5132324Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5132432Z               "line": 161
2026-06-22T02:37:07.5132537Z             },
2026-06-22T02:37:07.5132648Z             {
2026-06-22T02:37:07.5132771Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5132885Z               "line": 202
2026-06-22T02:37:07.5132981Z             },
2026-06-22T02:37:07.5133100Z             {
2026-06-22T02:37:07.5133234Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5133338Z               "line": 213
2026-06-22T02:37:07.5133443Z             },
2026-06-22T02:37:07.5133554Z             {
2026-06-22T02:37:07.5133691Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5133796Z               "line": 238
2026-06-22T02:37:07.5133901Z             },
2026-06-22T02:37:07.5134010Z             {
2026-06-22T02:37:07.5134140Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5134253Z               "line": 261
2026-06-22T02:37:07.5134358Z             },
2026-06-22T02:37:07.5134469Z             {
2026-06-22T02:37:07.5134611Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5134731Z               "line": 86
2026-06-22T02:37:07.5134837Z             }
2026-06-22T02:37:07.5134945Z           ]
2026-06-22T02:37:07.5135053Z         },
2026-06-22T02:37:07.5135159Z         "int": {
2026-06-22T02:37:07.5135285Z           "complete": true,
2026-06-22T02:37:07.5135390Z           "evidence": [
2026-06-22T02:37:07.5135496Z             {
2026-06-22T02:37:07.5135652Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5135763Z               "line": 285
2026-06-22T02:37:07.5135872Z             },
2026-06-22T02:37:07.5135976Z             {
2026-06-22T02:37:07.5136110Z               "path": "crates/spt-daemon/tests/pump.rs",
2026-06-22T02:37:07.5136229Z               "line": 145
2026-06-22T02:37:07.5136334Z             },
2026-06-22T02:37:07.5136439Z             {
2026-06-22T02:37:07.5136582Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5136697Z               "line": 684
2026-06-22T02:37:07.5136797Z             },
2026-06-22T02:37:07.5136906Z             {
2026-06-22T02:37:07.5137055Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5137183Z               "line": 1102
2026-06-22T02:37:07.5137293Z             }
2026-06-22T02:37:07.5137394Z           ]
2026-06-22T02:37:07.5137502Z         },
2026-06-22T02:37:07.5137606Z         "unit": {
2026-06-22T02:37:07.5137720Z           "complete": true,
2026-06-22T02:37:07.5137833Z           "evidence": [
2026-06-22T02:37:07.5138014Z             {
2026-06-22T02:37:07.5138152Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5138262Z               "line": 572
2026-06-22T02:37:07.5138372Z             },
2026-06-22T02:37:07.5138472Z             {
2026-06-22T02:37:07.5138615Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5138720Z               "line": 636
2026-06-22T02:37:07.5138824Z             },
2026-06-22T02:37:07.5138935Z             {
2026-06-22T02:37:07.5139153Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5139269Z               "line": 740
2026-06-22T02:37:07.5139378Z             },
2026-06-22T02:37:07.5139617Z             {
2026-06-22T02:37:07.5139754Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5139865Z               "line": 772
2026-06-22T02:37:07.5139975Z             },
2026-06-22T02:37:07.5140078Z             {
2026-06-22T02:37:07.5140213Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5140327Z               "line": 840
2026-06-22T02:37:07.5140440Z             },
2026-06-22T02:37:07.5140540Z             {
2026-06-22T02:37:07.5140679Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5140797Z               "line": 898
2026-06-22T02:37:07.5140893Z             },
2026-06-22T02:37:07.5141004Z             {
2026-06-22T02:37:07.5141131Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5141242Z               "line": 1173
2026-06-22T02:37:07.5141351Z             },
2026-06-22T02:37:07.5141446Z             {
2026-06-22T02:37:07.5141599Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.5141708Z               "line": 157
2026-06-22T02:37:07.5141819Z             },
2026-06-22T02:37:07.5141923Z             {
2026-06-22T02:37:07.5142070Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.5142196Z               "line": 250
2026-06-22T02:37:07.5142304Z             },
2026-06-22T02:37:07.5142414Z             {
2026-06-22T02:37:07.5142553Z               "path": "crates/spt-daemon/src/notifsync.rs",
2026-06-22T02:37:07.5142656Z               "line": 273
2026-06-22T02:37:07.5142761Z             },
2026-06-22T02:37:07.5142866Z             {
2026-06-22T02:37:07.5143012Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.5143121Z               "line": 355
2026-06-22T02:37:07.5143232Z             },
2026-06-22T02:37:07.5143335Z             {
2026-06-22T02:37:07.5143484Z               "path": "crates/spt-daemon/src/psyrelay.rs",
2026-06-22T02:37:07.5143593Z               "line": 392
2026-06-22T02:37:07.5143702Z             },
2026-06-22T02:37:07.5143813Z             {
2026-06-22T02:37:07.5143965Z               "path": "crates/spt-daemon/tests/notifsync.rs",
2026-06-22T02:37:07.5144080Z               "line": 131
2026-06-22T02:37:07.5144180Z             },
2026-06-22T02:37:07.5144294Z             {
2026-06-22T02:37:07.5144433Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:37:07.5144552Z               "line": 72
2026-06-22T02:37:07.5144651Z             },
2026-06-22T02:37:07.5144758Z             {
2026-06-22T02:37:07.5144904Z               "path": "crates/spt-net/src/net/notif.rs",
2026-06-22T02:37:07.5145015Z               "line": 97
2026-06-22T02:37:07.5145119Z             },
2026-06-22T02:37:07.5145219Z             {
2026-06-22T02:37:07.5145359Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5145471Z               "line": 379
2026-06-22T02:37:07.5145576Z             },
2026-06-22T02:37:07.5145681Z             {
2026-06-22T02:37:07.5145807Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5145930Z               "line": 417
2026-06-22T02:37:07.5146046Z             },
2026-06-22T02:37:07.5146145Z             {
2026-06-22T02:37:07.5146279Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5146389Z               "line": 433
2026-06-22T02:37:07.5146618Z             },
2026-06-22T02:37:07.5146728Z             {
2026-06-22T02:37:07.5146865Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5146981Z               "line": 472
2026-06-22T02:37:07.5147085Z             },
2026-06-22T02:37:07.5147190Z             {
2026-06-22T02:37:07.5147324Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5147438Z               "line": 489
2026-06-22T02:37:07.5147543Z             },
2026-06-22T02:37:07.5147653Z             {
2026-06-22T02:37:07.5147791Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5147901Z               "line": 517
2026-06-22T02:37:07.5148081Z             },
2026-06-22T02:37:07.5148185Z             {
2026-06-22T02:37:07.5148327Z               "path": "crates/spt-store/src/notif.rs",
2026-06-22T02:37:07.5148426Z               "line": 548
2026-06-22T02:37:07.5148526Z             },
2026-06-22T02:37:07.5148632Z             {
2026-06-22T02:37:07.5148769Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5148890Z               "line": 745
2026-06-22T02:37:07.5149070Z             }
2026-06-22T02:37:07.5149175Z           ]
2026-06-22T02:37:07.5149299Z         }
2026-06-22T02:37:07.5149418Z       }
2026-06-22T02:37:07.5149524Z     },
2026-06-22T02:37:07.5149623Z     {
2026-06-22T02:37:07.5149751Z       "id": "REQ-NOTIF-2",
2026-06-22T02:37:07.5150043Z       "title": "spt notify (agent-issued subnet notif) + notif_command manifest seam (harness + shell adapters)",
2026-06-22T02:37:07.5150163Z       "requiredStages": [
2026-06-22T02:37:07.5150267Z         "doc",
2026-06-22T02:37:07.5150372Z         "impl",
2026-06-22T02:37:07.5150488Z         "unit",
2026-06-22T02:37:07.5150591Z         "int"
2026-06-22T02:37:07.5150701Z       ],
2026-06-22T02:37:07.5150807Z       "stages": {
2026-06-22T02:37:07.5150920Z         "doc": {
2026-06-22T02:37:07.5151023Z           "complete": true,
2026-06-22T02:37:07.5151129Z           "evidence": [
2026-06-22T02:37:07.5151235Z             {
2026-06-22T02:37:07.5151362Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5151478Z               "line": 509
2026-06-22T02:37:07.5151578Z             },
2026-06-22T02:37:07.5151686Z             {
2026-06-22T02:37:07.5151812Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.5151930Z               "line": 123
2026-06-22T02:37:07.5152035Z             }
2026-06-22T02:37:07.5152135Z           ]
2026-06-22T02:37:07.5152245Z         },
2026-06-22T02:37:07.5152350Z         "impl": {
2026-06-22T02:37:07.5152465Z           "complete": true,
2026-06-22T02:37:07.5152574Z           "evidence": [
2026-06-22T02:37:07.5152684Z             {
2026-06-22T02:37:07.5152840Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5152935Z               "line": 287
2026-06-22T02:37:07.5153047Z             },
2026-06-22T02:37:07.5153150Z             {
2026-06-22T02:37:07.5153297Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5153417Z               "line": 301
2026-06-22T02:37:07.5153524Z             },
2026-06-22T02:37:07.5153628Z             {
2026-06-22T02:37:07.5153763Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5153876Z               "line": 326
2026-06-22T02:37:07.5153982Z             },
2026-06-22T02:37:07.5154091Z             {
2026-06-22T02:37:07.5154234Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5154345Z               "line": 239
2026-06-22T02:37:07.5154454Z             },
2026-06-22T02:37:07.5154558Z             {
2026-06-22T02:37:07.5154707Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5154816Z               "line": 95
2026-06-22T02:37:07.5154936Z             },
2026-06-22T02:37:07.5155036Z             {
2026-06-22T02:37:07.5155164Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5155284Z               "line": 2225
2026-06-22T02:37:07.5155383Z             },
2026-06-22T02:37:07.5155478Z             {
2026-06-22T02:37:07.5155708Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5155827Z               "line": 2274
2026-06-22T02:37:07.5155928Z             },
2026-06-22T02:37:07.5156032Z             {
2026-06-22T02:37:07.5156164Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5156275Z               "line": 2353
2026-06-22T02:37:07.5156381Z             },
2026-06-22T02:37:07.5156490Z             {
2026-06-22T02:37:07.5156625Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5156743Z               "line": 2392
2026-06-22T02:37:07.5156849Z             }
2026-06-22T02:37:07.5156954Z           ]
2026-06-22T02:37:07.5157058Z         },
2026-06-22T02:37:07.5157268Z         "int": {
2026-06-22T02:37:07.5157382Z           "complete": true,
2026-06-22T02:37:07.5157498Z           "evidence": [
2026-06-22T02:37:07.5157607Z             {
2026-06-22T02:37:07.5157755Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5157866Z               "line": 810
2026-06-22T02:37:07.5157978Z             },
2026-06-22T02:37:07.5158088Z             {
2026-06-22T02:37:07.5158227Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5158341Z               "line": 1345
2026-06-22T02:37:07.5158447Z             }
2026-06-22T02:37:07.5158552Z           ]
2026-06-22T02:37:07.5158660Z         },
2026-06-22T02:37:07.5158765Z         "unit": {
2026-06-22T02:37:07.5158878Z           "complete": true,
2026-06-22T02:37:07.5159072Z           "evidence": [
2026-06-22T02:37:07.5159178Z             {
2026-06-22T02:37:07.5159330Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5159455Z               "line": 1022
2026-06-22T02:37:07.5159578Z             },
2026-06-22T02:37:07.5159682Z             {
2026-06-22T02:37:07.5159821Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5159930Z               "line": 1090
2026-06-22T02:37:07.5160041Z             },
2026-06-22T02:37:07.5160145Z             {
2026-06-22T02:37:07.5160278Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5160379Z               "line": 8210
2026-06-22T02:37:07.5160484Z             },
2026-06-22T02:37:07.5160593Z             {
2026-06-22T02:37:07.5160719Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5160841Z               "line": 8265
2026-06-22T02:37:07.5160946Z             }
2026-06-22T02:37:07.5161048Z           ]
2026-06-22T02:37:07.5161151Z         }
2026-06-22T02:37:07.5161252Z       }
2026-06-22T02:37:07.5161363Z     },
2026-06-22T02:37:07.5161466Z     {
2026-06-22T02:37:07.5161588Z       "id": "REQ-PAIR-1",
2026-06-22T02:37:07.5161718Z       "title": "TOTP-seeded SPAKE2 pairing",
2026-06-22T02:37:07.5161842Z       "requiredStages": [
2026-06-22T02:37:07.5161946Z         "impl",
2026-06-22T02:37:07.5162052Z         "unit",
2026-06-22T02:37:07.5162156Z         "int"
2026-06-22T02:37:07.5162256Z       ],
2026-06-22T02:37:07.5162367Z       "stages": {
2026-06-22T02:37:07.5162481Z         "doc": {
2026-06-22T02:37:07.5162595Z           "complete": false,
2026-06-22T02:37:07.5162715Z           "evidence": []
2026-06-22T02:37:07.5162814Z         },
2026-06-22T02:37:07.5162915Z         "impl": {
2026-06-22T02:37:07.5163030Z           "complete": true,
2026-06-22T02:37:07.5163139Z           "evidence": [
2026-06-22T02:37:07.5163249Z             {
2026-06-22T02:37:07.5163405Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.5163525Z               "line": 27
2026-06-22T02:37:07.5163626Z             },
2026-06-22T02:37:07.5163734Z             {
2026-06-22T02:37:07.5163876Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.5164000Z               "line": 88
2026-06-22T02:37:07.5164112Z             },
2026-06-22T02:37:07.5164218Z             {
2026-06-22T02:37:07.5164375Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.5164484Z               "line": 110
2026-06-22T02:37:07.5164580Z             },
2026-06-22T02:37:07.5164794Z             {
2026-06-22T02:37:07.5164953Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.5165066Z               "line": 153
2026-06-22T02:37:07.5165172Z             },
2026-06-22T02:37:07.5165277Z             {
2026-06-22T02:37:07.5165418Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.5165529Z               "line": 182
2026-06-22T02:37:07.5165629Z             },
2026-06-22T02:37:07.5165733Z             {
2026-06-22T02:37:07.5165892Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5165991Z               "line": 29
2026-06-22T02:37:07.5166101Z             },
2026-06-22T02:37:07.5166305Z             {
2026-06-22T02:37:07.5166474Z               "path": "crates/spt-net/src/net/pairing/transcript.rs",
2026-06-22T02:37:07.5166592Z               "line": 31
2026-06-22T02:37:07.5166696Z             },
2026-06-22T02:37:07.5166796Z             {
2026-06-22T02:37:07.5166947Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5167075Z               "line": 44
2026-06-22T02:37:07.5167176Z             },
2026-06-22T02:37:07.5167280Z             {
2026-06-22T02:37:07.5167433Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5167543Z               "line": 171
2026-06-22T02:37:07.5167656Z             },
2026-06-22T02:37:07.5167758Z             {
2026-06-22T02:37:07.5167910Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5168019Z               "line": 376
2026-06-22T02:37:07.5168130Z             }
2026-06-22T02:37:07.5168239Z           ]
2026-06-22T02:37:07.5168343Z         },
2026-06-22T02:37:07.5168463Z         "int": {
2026-06-22T02:37:07.5168577Z           "complete": true,
2026-06-22T02:37:07.5168688Z           "evidence": [
2026-06-22T02:37:07.5168792Z             {
2026-06-22T02:37:07.5169036Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5169149Z               "line": 645
2026-06-22T02:37:07.5169258Z             },
2026-06-22T02:37:07.5169363Z             {
2026-06-22T02:37:07.5169513Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5169617Z               "line": 887
2026-06-22T02:37:07.5169723Z             }
2026-06-22T02:37:07.5169832Z           ]
2026-06-22T02:37:07.5169942Z         },
2026-06-22T02:37:07.5170048Z         "unit": {
2026-06-22T02:37:07.5170166Z           "complete": true,
2026-06-22T02:37:07.5170276Z           "evidence": [
2026-06-22T02:37:07.5170386Z             {
2026-06-22T02:37:07.5170538Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.5170654Z               "line": 236
2026-06-22T02:37:07.5170758Z             },
2026-06-22T02:37:07.5170867Z             {
2026-06-22T02:37:07.5171025Z               "path": "crates/spt-net/src/net/pairing/spake.rs",
2026-06-22T02:37:07.5171130Z               "line": 349
2026-06-22T02:37:07.5171240Z             },
2026-06-22T02:37:07.5171335Z             {
2026-06-22T02:37:07.5171497Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5171608Z               "line": 194
2026-06-22T02:37:07.5171706Z             },
2026-06-22T02:37:07.5176018Z             {
2026-06-22T02:37:07.5176232Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5176361Z               "line": 216
2026-06-22T02:37:07.5176466Z             },
2026-06-22T02:37:07.5176581Z             {
2026-06-22T02:37:07.5176753Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5176866Z               "line": 230
2026-06-22T02:37:07.5176977Z             },
2026-06-22T02:37:07.5177101Z             {
2026-06-22T02:37:07.5177265Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5177375Z               "line": 242
2026-06-22T02:37:07.5177479Z             },
2026-06-22T02:37:07.5177587Z             {
2026-06-22T02:37:07.5177746Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5178018Z               "line": 256
2026-06-22T02:37:07.5178118Z             },
2026-06-22T02:37:07.5178226Z             {
2026-06-22T02:37:07.5178380Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5178489Z               "line": 270
2026-06-22T02:37:07.5178598Z             },
2026-06-22T02:37:07.5178700Z             {
2026-06-22T02:37:07.5178851Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5179047Z               "line": 277
2026-06-22T02:37:07.5179151Z             },
2026-06-22T02:37:07.5179267Z             {
2026-06-22T02:37:07.5179427Z               "path": "crates/spt-net/src/net/pairing/totp.rs",
2026-06-22T02:37:07.5179672Z               "line": 295
2026-06-22T02:37:07.5179775Z             },
2026-06-22T02:37:07.5179880Z             {
2026-06-22T02:37:07.5180031Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5180140Z               "line": 968
2026-06-22T02:37:07.5180255Z             },
2026-06-22T02:37:07.5180356Z             {
2026-06-22T02:37:07.5180507Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5180613Z               "line": 1051
2026-06-22T02:37:07.5180721Z             },
2026-06-22T02:37:07.5180826Z             {
2026-06-22T02:37:07.5180975Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5181084Z               "line": 1121
2026-06-22T02:37:07.5181185Z             },
2026-06-22T02:37:07.5181294Z             {
2026-06-22T02:37:07.5181442Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5181548Z               "line": 1182
2026-06-22T02:37:07.5181647Z             },
2026-06-22T02:37:07.5181752Z             {
2026-06-22T02:37:07.5181910Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5182009Z               "line": 1238
2026-06-22T02:37:07.5182120Z             },
2026-06-22T02:37:07.5182220Z             {
2026-06-22T02:37:07.5182376Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5182487Z               "line": 1457
2026-06-22T02:37:07.5182595Z             }
2026-06-22T02:37:07.5182704Z           ]
2026-06-22T02:37:07.5182795Z         }
2026-06-22T02:37:07.5182896Z       }
2026-06-22T02:37:07.5182995Z     },
2026-06-22T02:37:07.5183095Z     {
2026-06-22T02:37:07.5183210Z       "id": "REQ-PAIR-2",
2026-06-22T02:37:07.5183376Z       "title": "Local trust store with TOFU + warn-on-change",
2026-06-22T02:37:07.5183506Z       "requiredStages": [],
2026-06-22T02:37:07.5183605Z       "stages": {
2026-06-22T02:37:07.5183716Z         "doc": {
2026-06-22T02:37:07.5183844Z           "complete": false,
2026-06-22T02:37:07.5183948Z           "evidence": []
2026-06-22T02:37:07.5184040Z         },
2026-06-22T02:37:07.5184150Z         "impl": {
2026-06-22T02:37:07.5184273Z           "complete": false,
2026-06-22T02:37:07.5184374Z           "evidence": []
2026-06-22T02:37:07.5184483Z         },
2026-06-22T02:37:07.5184592Z         "int": {
2026-06-22T02:37:07.5184698Z           "complete": false,
2026-06-22T02:37:07.5184812Z           "evidence": []
2026-06-22T02:37:07.5184920Z         },
2026-06-22T02:37:07.5185035Z         "unit": {
2026-06-22T02:37:07.5185139Z           "complete": false,
2026-06-22T02:37:07.5185256Z           "evidence": []
2026-06-22T02:37:07.5185362Z         }
2026-06-22T02:37:07.5185468Z       }
2026-06-22T02:37:07.5185566Z     },
2026-06-22T02:37:07.5185672Z     {
2026-06-22T02:37:07.5185791Z       "id": "REQ-PAIR-3",
2026-06-22T02:37:07.5185962Z       "title": "Fetch current pairing code from any paired node",
2026-06-22T02:37:07.5186082Z       "requiredStages": [
2026-06-22T02:37:07.5186196Z         "impl",
2026-06-22T02:37:07.5186307Z         "unit"
2026-06-22T02:37:07.5186411Z       ],
2026-06-22T02:37:07.5186520Z       "stages": {
2026-06-22T02:37:07.5186636Z         "doc": {
2026-06-22T02:37:07.5186754Z           "complete": false,
2026-06-22T02:37:07.5186877Z           "evidence": []
2026-06-22T02:37:07.5187083Z         },
2026-06-22T02:37:07.5187197Z         "impl": {
2026-06-22T02:37:07.5187317Z           "complete": true,
2026-06-22T02:37:07.5187431Z           "evidence": [
2026-06-22T02:37:07.5187537Z             {
2026-06-22T02:37:07.5187670Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5187783Z               "line": 3259
2026-06-22T02:37:07.5187883Z             },
2026-06-22T02:37:07.5187978Z             {
2026-06-22T02:37:07.5188109Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5188224Z               "line": 3328
2026-06-22T02:37:07.5188329Z             },
2026-06-22T02:37:07.5188424Z             {
2026-06-22T02:37:07.5188626Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5188739Z               "line": 3709
2026-06-22T02:37:07.5188849Z             },
2026-06-22T02:37:07.5189040Z             {
2026-06-22T02:37:07.5189163Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5189302Z               "line": 4961
2026-06-22T02:37:07.5189411Z             }
2026-06-22T02:37:07.5189517Z           ]
2026-06-22T02:37:07.5189617Z         },
2026-06-22T02:37:07.5189721Z         "int": {
2026-06-22T02:37:07.5189832Z           "complete": false,
2026-06-22T02:37:07.5189946Z           "evidence": []
2026-06-22T02:37:07.5190055Z         },
2026-06-22T02:37:07.5190156Z         "unit": {
2026-06-22T02:37:07.5190261Z           "complete": true,
2026-06-22T02:37:07.5190369Z           "evidence": [
2026-06-22T02:37:07.5190478Z             {
2026-06-22T02:37:07.5190606Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5190719Z               "line": 9964
2026-06-22T02:37:07.5190829Z             },
2026-06-22T02:37:07.5190935Z             {
2026-06-22T02:37:07.5191062Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5191173Z               "line": 10179
2026-06-22T02:37:07.5191277Z             },
2026-06-22T02:37:07.5191377Z             {
2026-06-22T02:37:07.5191507Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5191625Z               "line": 10838
2026-06-22T02:37:07.5191731Z             },
2026-06-22T02:37:07.5191835Z             {
2026-06-22T02:37:07.5191963Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5192074Z               "line": 10857
2026-06-22T02:37:07.5192174Z             },
2026-06-22T02:37:07.5192273Z             {
2026-06-22T02:37:07.5192408Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5192507Z               "line": 10881
2026-06-22T02:37:07.5192612Z             },
2026-06-22T02:37:07.5192709Z             {
2026-06-22T02:37:07.5192836Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5192956Z               "line": 10900
2026-06-22T02:37:07.5193062Z             },
2026-06-22T02:37:07.5193165Z             {
2026-06-22T02:37:07.5193283Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5193399Z               "line": 10913
2026-06-22T02:37:07.5193503Z             },
2026-06-22T02:37:07.5193598Z             {
2026-06-22T02:37:07.5193728Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5193836Z               "line": 10922
2026-06-22T02:37:07.5193941Z             }
2026-06-22T02:37:07.5194047Z           ]
2026-06-22T02:37:07.5194151Z         }
2026-06-22T02:37:07.5194256Z       }
2026-06-22T02:37:07.5194362Z     },
2026-06-22T02:37:07.5194462Z     {
2026-06-22T02:37:07.5194570Z       "id": "REQ-PAIR-4",
2026-06-22T02:37:07.5194710Z       "title": "Subnet naming on first pairing",
2026-06-22T02:37:07.5194814Z       "requiredStages": [
2026-06-22T02:37:07.5194929Z         "impl",
2026-06-22T02:37:07.5195034Z         "unit"
2026-06-22T02:37:07.5195148Z       ],
2026-06-22T02:37:07.5195254Z       "stages": {
2026-06-22T02:37:07.5195368Z         "doc": {
2026-06-22T02:37:07.5195481Z           "complete": false,
2026-06-22T02:37:07.5195595Z           "evidence": []
2026-06-22T02:37:07.5195694Z         },
2026-06-22T02:37:07.5195803Z         "impl": {
2026-06-22T02:37:07.5196028Z           "complete": true,
2026-06-22T02:37:07.5196131Z           "evidence": [
2026-06-22T02:37:07.5196232Z             {
2026-06-22T02:37:07.5196394Z               "path": "crates/spt-store/src/subnet.rs",
2026-06-22T02:37:07.5196508Z               "line": 174
2026-06-22T02:37:07.5196614Z             }
2026-06-22T02:37:07.5196718Z           ]
2026-06-22T02:37:07.5196823Z         },
2026-06-22T02:37:07.5196933Z         "int": {
2026-06-22T02:37:07.5197052Z           "complete": false,
2026-06-22T02:37:07.5197167Z           "evidence": []
2026-06-22T02:37:07.5197257Z         },
2026-06-22T02:37:07.5197362Z         "unit": {
2026-06-22T02:37:07.5197462Z           "complete": true,
2026-06-22T02:37:07.5197816Z           "evidence": [
2026-06-22T02:37:07.5197925Z             {
2026-06-22T02:37:07.5198077Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5198197Z               "line": 1294
2026-06-22T02:37:07.5198301Z             }
2026-06-22T02:37:07.5198409Z           ]
2026-06-22T02:37:07.5198519Z         }
2026-06-22T02:37:07.5198617Z       }
2026-06-22T02:37:07.5198717Z     },
2026-06-22T02:37:07.5198822Z     {
2026-06-22T02:37:07.5198932Z       "id": "REQ-PAIR-5",
2026-06-22T02:37:07.5199351Z       "title": "Multi-subnet pairing: subnet-name discovery input, create-new-names-up-front, rendezvous-token hashing",
2026-06-22T02:37:07.5199481Z       "requiredStages": [
2026-06-22T02:37:07.5199586Z         "impl",
2026-06-22T02:37:07.5199695Z         "unit",
2026-06-22T02:37:07.5199796Z         "int"
2026-06-22T02:37:07.5199910Z       ],
2026-06-22T02:37:07.5200019Z       "stages": {
2026-06-22T02:37:07.5200125Z         "doc": {
2026-06-22T02:37:07.5200253Z           "complete": false,
2026-06-22T02:37:07.5200363Z           "evidence": []
2026-06-22T02:37:07.5200473Z         },
2026-06-22T02:37:07.5200577Z         "impl": {
2026-06-22T02:37:07.5200693Z           "complete": true,
2026-06-22T02:37:07.5200807Z           "evidence": [
2026-06-22T02:37:07.5200910Z             {
2026-06-22T02:37:07.5201072Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5201180Z               "line": 44
2026-06-22T02:37:07.5201289Z             },
2026-06-22T02:37:07.5201394Z             {
2026-06-22T02:37:07.5201546Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5201661Z               "line": 96
2026-06-22T02:37:07.5201761Z             },
2026-06-22T02:37:07.5201870Z             {
2026-06-22T02:37:07.5202019Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5202129Z               "line": 107
2026-06-22T02:37:07.5202242Z             },
2026-06-22T02:37:07.5202348Z             {
2026-06-22T02:37:07.5202491Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5202600Z               "line": 124
2026-06-22T02:37:07.5202706Z             },
2026-06-22T02:37:07.5202810Z             {
2026-06-22T02:37:07.5202963Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5203081Z               "line": 155
2026-06-22T02:37:07.5203177Z             },
2026-06-22T02:37:07.5203283Z             {
2026-06-22T02:37:07.5203424Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5203540Z               "line": 195
2026-06-22T02:37:07.5203646Z             },
2026-06-22T02:37:07.5203748Z             {
2026-06-22T02:37:07.5203901Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5204012Z               "line": 251
2026-06-22T02:37:07.5204125Z             },
2026-06-22T02:37:07.5204230Z             {
2026-06-22T02:37:07.5204401Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:37:07.5204516Z               "line": 33
2026-06-22T02:37:07.5204626Z             },
2026-06-22T02:37:07.5204735Z             {
2026-06-22T02:37:07.5204903Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:37:07.5205012Z               "line": 45
2026-06-22T02:37:07.5205233Z             },
2026-06-22T02:37:07.5205341Z             {
2026-06-22T02:37:07.5205504Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:37:07.5205622Z               "line": 59
2026-06-22T02:37:07.5205722Z             },
2026-06-22T02:37:07.5205828Z             {
2026-06-22T02:37:07.5205984Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5206097Z               "line": 376
2026-06-22T02:37:07.5206208Z             }
2026-06-22T02:37:07.5206310Z           ]
2026-06-22T02:37:07.5206410Z         },
2026-06-22T02:37:07.5206559Z         "int": {
2026-06-22T02:37:07.5206677Z           "complete": true,
2026-06-22T02:37:07.5206987Z           "evidence": [
2026-06-22T02:37:07.5207093Z             {
2026-06-22T02:37:07.5207255Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5207363Z               "line": 887
2026-06-22T02:37:07.5207475Z             },
2026-06-22T02:37:07.5207579Z             {
2026-06-22T02:37:07.5207732Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5207841Z               "line": 342
2026-06-22T02:37:07.5207950Z             }
2026-06-22T02:37:07.5208056Z           ]
2026-06-22T02:37:07.5208160Z         },
2026-06-22T02:37:07.5208270Z         "unit": {
2026-06-22T02:37:07.5208386Z           "complete": true,
2026-06-22T02:37:07.5208489Z           "evidence": [
2026-06-22T02:37:07.5208599Z             {
2026-06-22T02:37:07.5208739Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5208851Z               "line": 293
2026-06-22T02:37:07.5209027Z             },
2026-06-22T02:37:07.5209126Z             {
2026-06-22T02:37:07.5209286Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5209397Z               "line": 304
2026-06-22T02:37:07.5209511Z             },
2026-06-22T02:37:07.5209611Z             {
2026-06-22T02:37:07.5209764Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5209878Z               "line": 406
2026-06-22T02:37:07.5209979Z             },
2026-06-22T02:37:07.5210084Z             {
2026-06-22T02:37:07.5210240Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:37:07.5210356Z               "line": 72
2026-06-22T02:37:07.5210460Z             },
2026-06-22T02:37:07.5210565Z             {
2026-06-22T02:37:07.5210732Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:37:07.5210842Z               "line": 82
2026-06-22T02:37:07.5210953Z             },
2026-06-22T02:37:07.5211052Z             {
2026-06-22T02:37:07.5211209Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:37:07.5211324Z               "line": 100
2026-06-22T02:37:07.5211432Z             },
2026-06-22T02:37:07.5211541Z             {
2026-06-22T02:37:07.5211693Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:37:07.5211810Z               "line": 110
2026-06-22T02:37:07.5211921Z             },
2026-06-22T02:37:07.5212027Z             {
2026-06-22T02:37:07.5212187Z               "path": "crates/spt-net/src/net/pairing/rendezvous.rs",
2026-06-22T02:37:07.5212298Z               "line": 125
2026-06-22T02:37:07.5212407Z             },
2026-06-22T02:37:07.5212512Z             {
2026-06-22T02:37:07.5212669Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5212778Z               "line": 1044
2026-06-22T02:37:07.5212889Z             },
2026-06-22T02:37:07.5213003Z             {
2026-06-22T02:37:07.5213151Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5213266Z               "line": 1110
2026-06-22T02:37:07.5213375Z             },
2026-06-22T02:37:07.5213480Z             {
2026-06-22T02:37:07.5213623Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5213737Z               "line": 1357
2026-06-22T02:37:07.5213839Z             }
2026-06-22T02:37:07.5213942Z           ]
2026-06-22T02:37:07.5214163Z         }
2026-06-22T02:37:07.5214267Z       }
2026-06-22T02:37:07.5214370Z     },
2026-06-22T02:37:07.5214476Z     {
2026-06-22T02:37:07.5214591Z       "id": "REQ-PAIR-6",
2026-06-22T02:37:07.5214881Z       "title": "Elevation-gated per-subnet code fetch (UAC/root or elevated agent; else authenticator app)",
2026-06-22T02:37:07.5214994Z       "requiredStages": [
2026-06-22T02:37:07.5215110Z         "impl",
2026-06-22T02:37:07.5215214Z         "unit"
2026-06-22T02:37:07.5215323Z       ],
2026-06-22T02:37:07.5215425Z       "stages": {
2026-06-22T02:37:07.5215539Z         "doc": {
2026-06-22T02:37:07.5215652Z           "complete": false,
2026-06-22T02:37:07.5215886Z           "evidence": []
2026-06-22T02:37:07.5215996Z         },
2026-06-22T02:37:07.5216102Z         "impl": {
2026-06-22T02:37:07.5216220Z           "complete": true,
2026-06-22T02:37:07.5216331Z           "evidence": [
2026-06-22T02:37:07.5216441Z             {
2026-06-22T02:37:07.5216577Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5216701Z               "line": 3328
2026-06-22T02:37:07.5216810Z             },
2026-06-22T02:37:07.5216918Z             {
2026-06-22T02:37:07.5217057Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5217171Z               "line": 3709
2026-06-22T02:37:07.5217285Z             },
2026-06-22T02:37:07.5217391Z             {
2026-06-22T02:37:07.5217528Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.5217648Z               "line": 18
2026-06-22T02:37:07.5217748Z             },
2026-06-22T02:37:07.5217857Z             {
2026-06-22T02:37:07.5217987Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.5218106Z               "line": 49
2026-06-22T02:37:07.5218215Z             },
2026-06-22T02:37:07.5218306Z             {
2026-06-22T02:37:07.5218439Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.5218554Z               "line": 318
2026-06-22T02:37:07.5218665Z             }
2026-06-22T02:37:07.5218772Z           ]
2026-06-22T02:37:07.5218883Z         },
2026-06-22T02:37:07.5219063Z         "int": {
2026-06-22T02:37:07.5219183Z           "complete": false,
2026-06-22T02:37:07.5219289Z           "evidence": []
2026-06-22T02:37:07.5219397Z         },
2026-06-22T02:37:07.5219501Z         "unit": {
2026-06-22T02:37:07.5219616Z           "complete": true,
2026-06-22T02:37:07.5219728Z           "evidence": [
2026-06-22T02:37:07.5219832Z             {
2026-06-22T02:37:07.5219957Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5220071Z               "line": 10935
2026-06-22T02:37:07.5220176Z             },
2026-06-22T02:37:07.5220282Z             {
2026-06-22T02:37:07.5220414Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5220525Z               "line": 10952
2026-06-22T02:37:07.5220629Z             },
2026-06-22T02:37:07.5220734Z             {
2026-06-22T02:37:07.5220873Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.5220977Z               "line": 383
2026-06-22T02:37:07.5221087Z             },
2026-06-22T02:37:07.5221193Z             {
2026-06-22T02:37:07.5221325Z               "path": "crates/spt/src/elevation.rs",
2026-06-22T02:37:07.5221439Z               "line": 392
2026-06-22T02:37:07.5221546Z             }
2026-06-22T02:37:07.5221659Z           ]
2026-06-22T02:37:07.5221759Z         }
2026-06-22T02:37:07.5221861Z       }
2026-06-22T02:37:07.5221964Z     },
2026-06-22T02:37:07.5222072Z     {
2026-06-22T02:37:07.5222187Z       "id": "REQ-PAIR-7",
2026-06-22T02:37:07.5222366Z       "title": "Subnet icon (inline image metadata, GUI-only consumer)",
2026-06-22T02:37:07.5222486Z       "requiredStages": [],
2026-06-22T02:37:07.5222596Z       "stages": {
2026-06-22T02:37:07.5222704Z         "doc": {
2026-06-22T02:37:07.5222820Z           "complete": false,
2026-06-22T02:37:07.5222930Z           "evidence": []
2026-06-22T02:37:07.5223033Z         },
2026-06-22T02:37:07.5223139Z         "impl": {
2026-06-22T02:37:07.5223263Z           "complete": false,
2026-06-22T02:37:07.5223478Z           "evidence": []
2026-06-22T02:37:07.5223587Z         },
2026-06-22T02:37:07.5223687Z         "int": {
2026-06-22T02:37:07.5223807Z           "complete": false,
2026-06-22T02:37:07.5223926Z           "evidence": []
2026-06-22T02:37:07.5224016Z         },
2026-06-22T02:37:07.5224127Z         "unit": {
2026-06-22T02:37:07.5224235Z           "complete": false,
2026-06-22T02:37:07.5224351Z           "evidence": []
2026-06-22T02:37:07.5224456Z         }
2026-06-22T02:37:07.5224564Z       }
2026-06-22T02:37:07.5224675Z     },
2026-06-22T02:37:07.5224775Z     {
2026-06-22T02:37:07.5224902Z       "id": "REQ-PAIR-8",
2026-06-22T02:37:07.5226466Z       "title": "NTP TOTP offset: the pairing ceremony queries NTP at ceremony time (both sides) and applies the derived offset to the TOTP calculation in-process only; system-clock fallback when NTP is unreachable (offline LAN pairing unaffected — NTP failure never blocks a pairing that succeeds today); never sets the OS clock; no background sync loop (M8 decision 18; field trigger: enlyzeam clock >1 min off exceeds the ±1 window)",
2026-06-22T02:37:07.5226610Z       "requiredStages": [
2026-06-22T02:37:07.5226724Z         "impl",
2026-06-22T02:37:07.5226819Z         "unit"
2026-06-22T02:37:07.5226934Z       ],
2026-06-22T02:37:07.5227044Z       "stages": {
2026-06-22T02:37:07.5227156Z         "doc": {
2026-06-22T02:37:07.5227275Z           "complete": false,
2026-06-22T02:37:07.5227394Z           "evidence": []
2026-06-22T02:37:07.5227507Z         },
2026-06-22T02:37:07.5227617Z         "impl": {
2026-06-22T02:37:07.5227736Z           "complete": true,
2026-06-22T02:37:07.5227850Z           "evidence": [
2026-06-22T02:37:07.5227966Z             {
2026-06-22T02:37:07.5228117Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5228227Z               "line": 577
2026-06-22T02:37:07.5228332Z             },
2026-06-22T02:37:07.5228431Z             {
2026-06-22T02:37:07.5228600Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:37:07.5228714Z               "line": 22
2026-06-22T02:37:07.5228813Z             },
2026-06-22T02:37:07.5228914Z             {
2026-06-22T02:37:07.5229147Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:37:07.5229272Z               "line": 76
2026-06-22T02:37:07.5229367Z             },
2026-06-22T02:37:07.5229472Z             {
2026-06-22T02:37:07.5229610Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:37:07.5229719Z               "line": 127
2026-06-22T02:37:07.5229821Z             }
2026-06-22T02:37:07.5229939Z           ]
2026-06-22T02:37:07.5230052Z         },
2026-06-22T02:37:07.5230162Z         "int": {
2026-06-22T02:37:07.5230270Z           "complete": false,
2026-06-22T02:37:07.5230383Z           "evidence": []
2026-06-22T02:37:07.5230489Z         },
2026-06-22T02:37:07.5230599Z         "unit": {
2026-06-22T02:37:07.5230708Z           "complete": true,
2026-06-22T02:37:07.5230819Z           "evidence": [
2026-06-22T02:37:07.5230932Z             {
2026-06-22T02:37:07.5231085Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:37:07.5231194Z               "line": 183
2026-06-22T02:37:07.5231313Z             },
2026-06-22T02:37:07.5231409Z             {
2026-06-22T02:37:07.5231561Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:37:07.5231671Z               "line": 195
2026-06-22T02:37:07.5231777Z             },
2026-06-22T02:37:07.5231885Z             {
2026-06-22T02:37:07.5232039Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:37:07.5232153Z               "line": 211
2026-06-22T02:37:07.5232262Z             },
2026-06-22T02:37:07.5232373Z             {
2026-06-22T02:37:07.5232524Z               "path": "crates/spt-net/src/net/pairing/ntp.rs",
2026-06-22T02:37:07.5232628Z               "line": 227
2026-06-22T02:37:07.5232743Z             }
2026-06-22T02:37:07.5232841Z           ]
2026-06-22T02:37:07.5232949Z         }
2026-06-22T02:37:07.5233175Z       }
2026-06-22T02:37:07.5233274Z     },
2026-06-22T02:37:07.5233376Z     {
2026-06-22T02:37:07.5233490Z       "id": "REQ-PICKER-1",
2026-06-22T02:37:07.5237064Z       "title": "The picker renders a FOUR-state endpoint status (extending the W2 online/offline duality): the list-item square AND a color-coded STATUS line at the top of the pick-existing right-side details both show — gray OFFLINE; green ONLINE (online + PTY-controllable spt-hosted, not controlled); amber 'ONLINE - HARNESS ONLY' (online but NOT broker-PTY-controllable = harness-hosted, no broker PTY seat — today mis-shows green); blue 'ONLINE + CONTROLLED' (online + driven_by.is_some()). Derived on EndpointRow from {offline | controllable | driven_by} with precedence offline→gray, else driven_by→blue, else !controllable→amber, else green (driven_by outranks harness-only; mutually exclusive in practice — a harness-only endpoint has no broker PTY to control). The controllable discriminator is a NEW InfoJson.controllable: Option<bool> (serde-default, N-1-safe), stamped at the establish seam — cmd_listen (harness-hosted relay, no broker PTY) → Some(false); cmd_bind live_agent (spt-hosted broker PTY) → Some(true); absent → not-controllable (amber) default (harness-hosted is the common mis-reported case; one bind self-corrects). Store-projection-only (no live daemon query — doyle ruling). (v0.10.0)",
2026-06-22T02:37:07.5237340Z       "requiredStages": [
2026-06-22T02:37:07.5237441Z         "impl",
2026-06-22T02:37:07.5237557Z         "unit"
2026-06-22T02:37:07.5237665Z       ],
2026-06-22T02:37:07.5237773Z       "stages": {
2026-06-22T02:37:07.5237883Z         "doc": {
2026-06-22T02:37:07.5238010Z           "complete": false,
2026-06-22T02:37:07.5238124Z           "evidence": []
2026-06-22T02:37:07.5238225Z         },
2026-06-22T02:37:07.5238338Z         "impl": {
2026-06-22T02:37:07.5238453Z           "complete": true,
2026-06-22T02:37:07.5238563Z           "evidence": [
2026-06-22T02:37:07.5238672Z             {
2026-06-22T02:37:07.5238816Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5239034Z               "line": 248
2026-06-22T02:37:07.5239136Z             },
2026-06-22T02:37:07.5239240Z             {
2026-06-22T02:37:07.5239397Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5239508Z               "line": 263
2026-06-22T02:37:07.5239617Z             }
2026-06-22T02:37:07.5239707Z           ]
2026-06-22T02:37:07.5239818Z         },
2026-06-22T02:37:07.5239922Z         "int": {
2026-06-22T02:37:07.5240037Z           "complete": false,
2026-06-22T02:37:07.5240156Z           "evidence": []
2026-06-22T02:37:07.5240246Z         },
2026-06-22T02:37:07.5240366Z         "unit": {
2026-06-22T02:37:07.5240476Z           "complete": true,
2026-06-22T02:37:07.5240588Z           "evidence": [
2026-06-22T02:37:07.5240689Z             {
2026-06-22T02:37:07.5240840Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.5240948Z               "line": 476
2026-06-22T02:37:07.5241058Z             },
2026-06-22T02:37:07.5241169Z             {
2026-06-22T02:37:07.5241310Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5241426Z               "line": 753
2026-06-22T02:37:07.5241534Z             },
2026-06-22T02:37:07.5241635Z             {
2026-06-22T02:37:07.5241773Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5241873Z               "line": 886
2026-06-22T02:37:07.5241979Z             },
2026-06-22T02:37:07.5242074Z             {
2026-06-22T02:37:07.5242212Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:37:07.5242323Z               "line": 455
2026-06-22T02:37:07.5242431Z             }
2026-06-22T02:37:07.5242536Z           ]
2026-06-22T02:37:07.5242633Z         }
2026-06-22T02:37:07.5242736Z       }
2026-06-22T02:37:07.5242832Z     },
2026-06-22T02:37:07.5242938Z     {
2026-06-22T02:37:07.5243047Z       "id": "REQ-PICKER-2",
2026-06-22T02:37:07.5245013Z       "title": "The picker's project-history loader reads the git-backed context store, not the bare working tree: data.rs project_history_for enumerates an endpoint's projects via the BranchStore branch set (the context store keeps per-project context in git branches — contextstore::project_branch(project_id), checked out to projects/<project>/<id>/ only on-demand) instead of raw std::fs::read_dir over the empty working tree (which returned empty for ALL rows incl wall-a — the operator bug). Ordered newest→oldest by branch commit recency; degrades to empty (informational pane), never fails. (v0.10.0)",
2026-06-22T02:37:07.5245265Z       "requiredStages": [
2026-06-22T02:37:07.5245370Z         "impl",
2026-06-22T02:37:07.5245580Z         "unit"
2026-06-22T02:37:07.5245689Z       ],
2026-06-22T02:37:07.5245791Z       "stages": {
2026-06-22T02:37:07.5245895Z         "doc": {
2026-06-22T02:37:07.5246013Z           "complete": false,
2026-06-22T02:37:07.5246136Z           "evidence": []
2026-06-22T02:37:07.5246243Z         },
2026-06-22T02:37:07.5246361Z         "impl": {
2026-06-22T02:37:07.5246485Z           "complete": true,
2026-06-22T02:37:07.5246595Z           "evidence": [
2026-06-22T02:37:07.5246708Z             {
2026-06-22T02:37:07.5246867Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5246990Z               "line": 183
2026-06-22T02:37:07.5247095Z             },
2026-06-22T02:37:07.5247200Z             {
2026-06-22T02:37:07.5247333Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5247444Z               "line": 296
2026-06-22T02:37:07.5247558Z             }
2026-06-22T02:37:07.5247667Z           ]
2026-06-22T02:37:07.5247769Z         },
2026-06-22T02:37:07.5247886Z         "int": {
2026-06-22T02:37:07.5247996Z           "complete": false,
2026-06-22T02:37:07.5248102Z           "evidence": []
2026-06-22T02:37:07.5248206Z         },
2026-06-22T02:37:07.5248315Z         "unit": {
2026-06-22T02:37:07.5248424Z           "complete": true,
2026-06-22T02:37:07.5248546Z           "evidence": [
2026-06-22T02:37:07.5248655Z             {
2026-06-22T02:37:07.5248804Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5248913Z               "line": 655
2026-06-22T02:37:07.5249105Z             }
2026-06-22T02:37:07.5249218Z           ]
2026-06-22T02:37:07.5249323Z         }
2026-06-22T02:37:07.5249434Z       }
2026-06-22T02:37:07.5249533Z     },
2026-06-22T02:37:07.5249633Z     {
2026-06-22T02:37:07.5249758Z       "id": "REQ-PICKER-3",
2026-06-22T02:37:07.5252253Z       "title": "A self-owned subnet row reconciles its status to the LIVE roster: a Subnet-category row whose endpoint_id overlaps a local (is_local) roster id is self-owned (this node hosts it), so its status square is OVERRIDDEN with the live roster status — the WAN registry snapshot (wansend::load_snapshots) is a periodically-advertised, independently-stale projection, while the local roster (p.alive) is ground truth for an endpoint this node hosts. One status square per endpoint (CONTEXT.md:348-350 — nothing licenses opposite squares for one endpoint across its Local vs Subnet listings). A reconcile pass in data.rs after the local_rows + subnet_rows gather; BOTH category listings are preserved (Local + Subnet are legitimately distinct views — you are in your own subnet), only the STATUS is unified. (v0.10.0)",
2026-06-22T02:37:07.5252391Z       "requiredStages": [
2026-06-22T02:37:07.5252505Z         "impl",
2026-06-22T02:37:07.5252611Z         "unit"
2026-06-22T02:37:07.5252716Z       ],
2026-06-22T02:37:07.5252824Z       "stages": {
2026-06-22T02:37:07.5252935Z         "doc": {
2026-06-22T02:37:07.5253054Z           "complete": false,
2026-06-22T02:37:07.5253164Z           "evidence": []
2026-06-22T02:37:07.5253278Z         },
2026-06-22T02:37:07.5253392Z         "impl": {
2026-06-22T02:37:07.5253498Z           "complete": true,
2026-06-22T02:37:07.5253616Z           "evidence": [
2026-06-22T02:37:07.5253711Z             {
2026-06-22T02:37:07.5253863Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5254103Z               "line": 124
2026-06-22T02:37:07.5254205Z             }
2026-06-22T02:37:07.5254309Z           ]
2026-06-22T02:37:07.5254413Z         },
2026-06-22T02:37:07.5254524Z         "int": {
2026-06-22T02:37:07.5254638Z           "complete": false,
2026-06-22T02:37:07.5254747Z           "evidence": []
2026-06-22T02:37:07.5254844Z         },
2026-06-22T02:37:07.5254957Z         "unit": {
2026-06-22T02:37:07.5255072Z           "complete": true,
2026-06-22T02:37:07.5255177Z           "evidence": [
2026-06-22T02:37:07.5255277Z             {
2026-06-22T02:37:07.5255420Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5255639Z               "line": 369
2026-06-22T02:37:07.5255750Z             }
2026-06-22T02:37:07.5255854Z           ]
2026-06-22T02:37:07.5255958Z         }
2026-06-22T02:37:07.5256065Z       }
2026-06-22T02:37:07.5256159Z     },
2026-06-22T02:37:07.5256259Z     {
2026-06-22T02:37:07.5256370Z       "id": "REQ-PICKER-4",
2026-06-22T02:37:07.5258305Z       "title": "The picker's Subnet category renders the canonical node LABEL, not bare key-hex: a subnet row's node renders as 'LABEL (keyprefix…)' (e.g. 'HFENDULEAM (bcead52b…)') per CONTEXT.md:650 + Instance.node_label, NOT the raw node key-hex (SPT_DEV:14efb80cb… — a picker-only regression because resource_projection→ResourceRow drops node_label, so data.rs subnet_rows uses the raw row.node). Thread node_label into the picker subnet path (ResourceRow gains node_label, or subnet_rows looks it up via the registry's node_labels) and REUSE the one canonical render (format!(\"{l} ({}…)\", key_prefix) — cli.rs / wansend.rs), never a re-implementation. (v0.10.0)",
2026-06-22T02:37:07.5258442Z       "requiredStages": [
2026-06-22T02:37:07.5258547Z         "impl",
2026-06-22T02:37:07.5258653Z         "unit"
2026-06-22T02:37:07.5258751Z       ],
2026-06-22T02:37:07.5258865Z       "stages": {
2026-06-22T02:37:07.5259060Z         "doc": {
2026-06-22T02:37:07.5259182Z           "complete": false,
2026-06-22T02:37:07.5259307Z           "evidence": []
2026-06-22T02:37:07.5259403Z         },
2026-06-22T02:37:07.5259506Z         "impl": {
2026-06-22T02:37:07.5259612Z           "complete": true,
2026-06-22T02:37:07.5259722Z           "evidence": [
2026-06-22T02:37:07.5259825Z             {
2026-06-22T02:37:07.5259989Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5260098Z               "line": 353
2026-06-22T02:37:07.5260208Z             },
2026-06-22T02:37:07.5260308Z             {
2026-06-22T02:37:07.5260455Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5260562Z               "line": 105
2026-06-22T02:37:07.5260675Z             }
2026-06-22T02:37:07.5260779Z           ]
2026-06-22T02:37:07.5260881Z         },
2026-06-22T02:37:07.5260990Z         "int": {
2026-06-22T02:37:07.5261104Z           "complete": false,
2026-06-22T02:37:07.5261210Z           "evidence": []
2026-06-22T02:37:07.5261318Z         },
2026-06-22T02:37:07.5261423Z         "unit": {
2026-06-22T02:37:07.5261539Z           "complete": true,
2026-06-22T02:37:07.5261652Z           "evidence": [
2026-06-22T02:37:07.5261756Z             {
2026-06-22T02:37:07.5261908Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5262016Z               "line": 1246
2026-06-22T02:37:07.5262126Z             },
2026-06-22T02:37:07.5262232Z             {
2026-06-22T02:37:07.5262368Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5262470Z               "line": 427
2026-06-22T02:37:07.5262579Z             }
2026-06-22T02:37:07.5262683Z           ]
2026-06-22T02:37:07.5262794Z         }
2026-06-22T02:37:07.5262894Z       }
2026-06-22T02:37:07.5263003Z     },
2026-06-22T02:37:07.5263109Z     {
2026-06-22T02:37:07.5263218Z       "id": "REQ-PICKER-5",
2026-06-22T02:37:07.5266271Z       "title": "`spt endpoint list` (bare/subnet view) renders an ALIGNED table with canonical node labels: cmd_endpoint_list prints subnet rows with `\\t` TAB separators (cli.rs:~1651-1662) so variable-width endpoint_ids snap fields to different tab-stops → a RAGGED status column (operator screenshot: X/help statuses misaligned vs rt-*/sptc-*/wall-a); and it calls the node renderer with no label → bare key-hex for every row (SAME ResourceRow-drops-node_label root as REQ-PICKER-4). FIX: max-width per-column padding (mirror render_node_rows' pad, pad by char count not byte len — '…' is multibyte) replacing the tabs, and render the node via the shared node_label_display now that ResourceRow carries node_label (REQ-PICKER-4). Extract a pure row-formatter seam so the alignment+label is unit-testable. ALSO: the bare list is the SUBNET view (a just-run LOCAL perch is invisible cross-subnet until the next advertise tick), so emit a `--local` hint line so a freshly-run endpoint isn't perceived as lost. (v0.10.0; operator-flagged + doyle dispatch 2026-06-17)",
2026-06-22T02:37:07.5266659Z       "requiredStages": [
2026-06-22T02:37:07.5266776Z         "impl",
2026-06-22T02:37:07.5266886Z         "unit"
2026-06-22T02:37:07.5267002Z       ],
2026-06-22T02:37:07.5267109Z       "stages": {
2026-06-22T02:37:07.5267213Z         "doc": {
2026-06-22T02:37:07.5267329Z           "complete": false,
2026-06-22T02:37:07.5267443Z           "evidence": []
2026-06-22T02:37:07.5271818Z         },
2026-06-22T02:37:07.5271965Z         "impl": {
2026-06-22T02:37:07.5272086Z           "complete": true,
2026-06-22T02:37:07.5272189Z           "evidence": [
2026-06-22T02:37:07.5272302Z             {
2026-06-22T02:37:07.5272445Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5272558Z               "line": 1802
2026-06-22T02:37:07.5272662Z             }
2026-06-22T02:37:07.5272778Z           ]
2026-06-22T02:37:07.5272891Z         },
2026-06-22T02:37:07.5272996Z         "int": {
2026-06-22T02:37:07.5273116Z           "complete": false,
2026-06-22T02:37:07.5273230Z           "evidence": []
2026-06-22T02:37:07.5273340Z         },
2026-06-22T02:37:07.5273445Z         "unit": {
2026-06-22T02:37:07.5273559Z           "complete": true,
2026-06-22T02:37:07.5273669Z           "evidence": [
2026-06-22T02:37:07.5273773Z             {
2026-06-22T02:37:07.5273921Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5274032Z               "line": 7526
2026-06-22T02:37:07.5274144Z             }
2026-06-22T02:37:07.5274236Z           ]
2026-06-22T02:37:07.5274341Z         }
2026-06-22T02:37:07.5274450Z       }
2026-06-22T02:37:07.5274550Z     },
2026-06-22T02:37:07.5274656Z     {
2026-06-22T02:37:07.5274802Z       "id": "REQ-PICKER-ADAPTER-DESCRIPTION",
2026-06-22T02:37:07.5276284Z       "title": "The Create-new adapter-CHOICE screen of `spt endpoint run`'s picker shows a right-hand Description panel (like the Pick-existing endpoint picker's two-pane) surfacing per-adapter detail: install date, last-updated, adapter TYPE / the endpoint types it hosts, and the adapter description — so the user can see WHAT each adapter is before choosing it (today the selector lists bare names). DEFERRED fast-follow to v0.12.0 (operator 2026-06-18). (post-v0.12.0)",
2026-06-22T02:37:07.5276435Z       "requiredStages": [],
2026-06-22T02:37:07.5276541Z       "stages": {
2026-06-22T02:37:07.5276655Z         "doc": {
2026-06-22T02:37:07.5276773Z           "complete": false,
2026-06-22T02:37:07.5276894Z           "evidence": []
2026-06-22T02:37:07.5277002Z         },
2026-06-22T02:37:07.5277103Z         "impl": {
2026-06-22T02:37:07.5277223Z           "complete": false,
2026-06-22T02:37:07.5277331Z           "evidence": []
2026-06-22T02:37:07.5277437Z         },
2026-06-22T02:37:07.5277552Z         "int": {
2026-06-22T02:37:07.5277688Z           "complete": false,
2026-06-22T02:37:07.5277793Z           "evidence": []
2026-06-22T02:37:07.5277903Z         },
2026-06-22T02:37:07.5278026Z         "unit": {
2026-06-22T02:37:07.5278146Z           "complete": false,
2026-06-22T02:37:07.5278266Z           "evidence": []
2026-06-22T02:37:07.5278360Z         }
2026-06-22T02:37:07.5278466Z       }
2026-06-22T02:37:07.5278575Z     },
2026-06-22T02:37:07.5278829Z     {
2026-06-22T02:37:07.5279043Z       "id": "REQ-PICKER-HISTORY-FRESH",
2026-06-22T02:37:07.5280217Z       "title": "The `spt endpoint run` picker shows project history for FRESH endpoints (operator-raised v0.12.0 real-harness finding). Symptom: a fresh endpoint shows no project history in the picker. ROOT TBD — investigate the project-history loader (v0.10.0 PICKER-2, picker/data.rs) before fixing: distinguish a real loader bug from 'fresh = no history yet' semantics. (v0.12.1)",
2026-06-22T02:37:07.5280350Z       "requiredStages": [
2026-06-22T02:37:07.5280466Z         "impl",
2026-06-22T02:37:07.5280570Z         "unit"
2026-06-22T02:37:07.5280675Z       ],
2026-06-22T02:37:07.5280898Z       "stages": {
2026-06-22T02:37:07.5281009Z         "doc": {
2026-06-22T02:37:07.5281123Z           "complete": false,
2026-06-22T02:37:07.5281232Z           "evidence": []
2026-06-22T02:37:07.5281343Z         },
2026-06-22T02:37:07.5281452Z         "impl": {
2026-06-22T02:37:07.5281566Z           "complete": true,
2026-06-22T02:37:07.5281682Z           "evidence": [
2026-06-22T02:37:07.5281790Z             {
2026-06-22T02:37:07.5281924Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5282039Z               "line": 275
2026-06-22T02:37:07.5282148Z             }
2026-06-22T02:37:07.5282248Z           ]
2026-06-22T02:37:07.5282354Z         },
2026-06-22T02:37:07.5282458Z         "int": {
2026-06-22T02:37:07.5282568Z           "complete": false,
2026-06-22T02:37:07.5282679Z           "evidence": []
2026-06-22T02:37:07.5282782Z         },
2026-06-22T02:37:07.5282900Z         "unit": {
2026-06-22T02:37:07.5283014Z           "complete": true,
2026-06-22T02:37:07.5283127Z           "evidence": [
2026-06-22T02:37:07.5283232Z             {
2026-06-22T02:37:07.5283366Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5283480Z               "line": 400
2026-06-22T02:37:07.5283590Z             }
2026-06-22T02:37:07.5283700Z           ]
2026-06-22T02:37:07.5283799Z         }
2026-06-22T02:37:07.5283915Z       }
2026-06-22T02:37:07.5284014Z     },
2026-06-22T02:37:07.5284114Z     {
2026-06-22T02:37:07.5284244Z       "id": "REQ-PICKER-ONLINE-ACTION",
2026-06-22T02:37:07.5285818Z       "title": "The `spt endpoint run` picker shows the correct action for an ALREADY-ONLINE endpoint — Attach, NOT 'Start now' (operator-raised v0.12.0 real-harness finding). Symptom: the picker offers 'Start now' for endpoints that are already online. ROOT TBD — investigate the status→action mapping (v0.10.0 PICKER-1 four-state status, picker/model.rs): is it reading live/online state correctly, or rendering stale/wedged broker state (i.e. partly a symptom of the broker wedge / status=online latch)? Fix so online → Attach. (v0.12.1)",
2026-06-22T02:37:07.5285966Z       "requiredStages": [
2026-06-22T02:37:07.5286075Z         "impl",
2026-06-22T02:37:07.5286181Z         "unit"
2026-06-22T02:37:07.5286281Z       ],
2026-06-22T02:37:07.5286404Z       "stages": {
2026-06-22T02:37:07.5286510Z         "doc": {
2026-06-22T02:37:07.5286628Z           "complete": false,
2026-06-22T02:37:07.5286738Z           "evidence": []
2026-06-22T02:37:07.5286834Z         },
2026-06-22T02:37:07.5286948Z         "impl": {
2026-06-22T02:37:07.5287062Z           "complete": true,
2026-06-22T02:37:07.5287177Z           "evidence": [
2026-06-22T02:37:07.5287287Z             {
2026-06-22T02:37:07.5287435Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5287549Z               "line": 654
2026-06-22T02:37:07.5287653Z             }
2026-06-22T02:37:07.5287760Z           ]
2026-06-22T02:37:07.5287859Z         },
2026-06-22T02:37:07.5287977Z         "int": {
2026-06-22T02:37:07.5288108Z           "complete": false,
2026-06-22T02:37:07.5288216Z           "evidence": []
2026-06-22T02:37:07.5288320Z         },
2026-06-22T02:37:07.5288420Z         "unit": {
2026-06-22T02:37:07.5288535Z           "complete": true,
2026-06-22T02:37:07.5288634Z           "evidence": [
2026-06-22T02:37:07.5288788Z             {
2026-06-22T02:37:07.5289112Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5289221Z               "line": 1078
2026-06-22T02:37:07.5289321Z             },
2026-06-22T02:37:07.5289417Z             {
2026-06-22T02:37:07.5289559Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5289661Z               "line": 1092
2026-06-22T02:37:07.5289774Z             }
2026-06-22T02:37:07.5289865Z           ]
2026-06-22T02:37:07.5289971Z         }
2026-06-22T02:37:07.5290075Z       }
2026-06-22T02:37:07.5290180Z     },
2026-06-22T02:37:07.5290285Z     {
2026-06-22T02:37:07.5290414Z       "id": "REQ-PICKER-UX-V013",
2026-06-22T02:37:07.5292116Z       "title": "`spt endpoint run` picker UX (v0.13.0 operator dogfooding): (1) SKIP the first screen — open directly on 'Pick existing'; `n` jumps to 'Create new'. (2) AUTO-ATTACH after both Start-new AND Resume-from-history (both currently don't attach and show no stdout); add an `h` shortcut to run headless (no attach). (3) 'controlled by' shows the node NAME (node_label_display), not the raw hex. (4) Clean up Start-new output — drop the Rust `pid=Some(142748)` leak and the 'harness binds its perch on startup' internals; user-friendly, not a process log. (v0.13.0)",
2026-06-22T02:37:07.5292256Z       "requiredStages": [],
2026-06-22T02:37:07.5292360Z       "stages": {
2026-06-22T02:37:07.5292470Z         "doc": {
2026-06-22T02:37:07.5292590Z           "complete": false,
2026-06-22T02:37:07.5292693Z           "evidence": []
2026-06-22T02:37:07.5292799Z         },
2026-06-22T02:37:07.5292905Z         "impl": {
2026-06-22T02:37:07.5293018Z           "complete": false,
2026-06-22T02:37:07.5293123Z           "evidence": []
2026-06-22T02:37:07.5293271Z         },
2026-06-22T02:37:07.5293399Z         "int": {
2026-06-22T02:37:07.5293518Z           "complete": false,
2026-06-22T02:37:07.5293635Z           "evidence": []
2026-06-22T02:37:07.5293735Z         },
2026-06-22T02:37:07.5293840Z         "unit": {
2026-06-22T02:37:07.5293955Z           "complete": false,
2026-06-22T02:37:07.5294068Z           "evidence": []
2026-06-22T02:37:07.5294175Z         }
2026-06-22T02:37:07.5294274Z       }
2026-06-22T02:37:07.5294383Z     },
2026-06-22T02:37:07.5294485Z     {
2026-06-22T02:37:07.5294608Z       "id": "REQ-PRES-1",
2026-06-22T02:37:07.5295965Z       "title": "Presence resolution: the presence datum (last_active_node, last_active_endpoint, ts) gossiped subnet-wide via the agent-interaction heartbeat (rides registry distribution, visibility-gated) + one first-class most-recently-active resolution API consumed by notif first-fire, update-consent delivery, consent escalation, and shell wake resolution (M5 scope decision 1: resolution only — the PresenceChannel endpoint stays deferred)",
2026-06-22T02:37:07.5296094Z       "requiredStages": [
2026-06-22T02:37:07.5296207Z         "impl",
2026-06-22T02:37:07.5296325Z         "unit",
2026-06-22T02:37:07.5296440Z         "int"
2026-06-22T02:37:07.5296545Z       ],
2026-06-22T02:37:07.5296654Z       "stages": {
2026-06-22T02:37:07.5296774Z         "doc": {
2026-06-22T02:37:07.5296888Z           "complete": true,
2026-06-22T02:37:07.5297007Z           "evidence": [
2026-06-22T02:37:07.5297108Z             {
2026-06-22T02:37:07.5297241Z               "path": "docs/DEFERRED.md",
2026-06-22T02:37:07.5297352Z               "line": 11
2026-06-22T02:37:07.5297470Z             }
2026-06-22T02:37:07.5297579Z           ]
2026-06-22T02:37:07.5297681Z         },
2026-06-22T02:37:07.5297794Z         "impl": {
2026-06-22T02:37:07.5297899Z           "complete": true,
2026-06-22T02:37:07.5298010Z           "evidence": [
2026-06-22T02:37:07.5298109Z             {
2026-06-22T02:37:07.5298267Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5298391Z               "line": 515
2026-06-22T02:37:07.5298485Z             },
2026-06-22T02:37:07.5298591Z             {
2026-06-22T02:37:07.5298738Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5298851Z               "line": 567
2026-06-22T02:37:07.5299142Z             },
2026-06-22T02:37:07.5299252Z             {
2026-06-22T02:37:07.5299410Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5299528Z               "line": 188
2026-06-22T02:37:07.5299634Z             },
2026-06-22T02:37:07.5299725Z             {
2026-06-22T02:37:07.5299858Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5299959Z               "line": 214
2026-06-22T02:37:07.5300068Z             },
2026-06-22T02:37:07.5300172Z             {
2026-06-22T02:37:07.5300321Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:37:07.5300434Z               "line": 28
2026-06-22T02:37:07.5300641Z             },
2026-06-22T02:37:07.5300745Z             {
2026-06-22T02:37:07.5300894Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:37:07.5301002Z               "line": 105
2026-06-22T02:37:07.5301106Z             },
2026-06-22T02:37:07.5301206Z             {
2026-06-22T02:37:07.5301366Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:37:07.5301465Z               "line": 161
2026-06-22T02:37:07.5301572Z             },
2026-06-22T02:37:07.5301680Z             {
2026-06-22T02:37:07.5301814Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:37:07.5301929Z               "line": 180
2026-06-22T02:37:07.5302033Z             },
2026-06-22T02:37:07.5302144Z             {
2026-06-22T02:37:07.5302296Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5302410Z               "line": 421
2026-06-22T02:37:07.5302516Z             },
2026-06-22T02:37:07.5302611Z             {
2026-06-22T02:37:07.5302768Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5302873Z               "line": 289
2026-06-22T02:37:07.5302982Z             },
2026-06-22T02:37:07.5303078Z             {
2026-06-22T02:37:07.5303216Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5303335Z               "line": 336
2026-06-22T02:37:07.5303441Z             },
2026-06-22T02:37:07.5303554Z             {
2026-06-22T02:37:07.5303698Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5303809Z               "line": 362
2026-06-22T02:37:07.5303902Z             },
2026-06-22T02:37:07.5304010Z             {
2026-06-22T02:37:07.5304158Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5304266Z               "line": 100
2026-06-22T02:37:07.5304371Z             }
2026-06-22T02:37:07.5304472Z           ]
2026-06-22T02:37:07.5304576Z         },
2026-06-22T02:37:07.5304681Z         "int": {
2026-06-22T02:37:07.5304791Z           "complete": true,
2026-06-22T02:37:07.5304905Z           "evidence": [
2026-06-22T02:37:07.5305011Z             {
2026-06-22T02:37:07.5305163Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5305272Z               "line": 563
2026-06-22T02:37:07.5305378Z             },
2026-06-22T02:37:07.5305487Z             {
2026-06-22T02:37:07.5305635Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5305740Z               "line": 747
2026-06-22T02:37:07.5305844Z             },
2026-06-22T02:37:07.5305955Z             {
2026-06-22T02:37:07.5306093Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5306212Z               "line": 1165
2026-06-22T02:37:07.5306318Z             }
2026-06-22T02:37:07.5306426Z           ]
2026-06-22T02:37:07.5306535Z         },
2026-06-22T02:37:07.5306645Z         "unit": {
2026-06-22T02:37:07.5306767Z           "complete": true,
2026-06-22T02:37:07.5306875Z           "evidence": [
2026-06-22T02:37:07.5306991Z             {
2026-06-22T02:37:07.5307134Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5307252Z               "line": 674
2026-06-22T02:37:07.5307354Z             },
2026-06-22T02:37:07.5307448Z             {
2026-06-22T02:37:07.5307597Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:37:07.5307806Z               "line": 238
2026-06-22T02:37:07.5307917Z             },
2026-06-22T02:37:07.5308020Z             {
2026-06-22T02:37:07.5308168Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:37:07.5308274Z               "line": 269
2026-06-22T02:37:07.5308378Z             },
2026-06-22T02:37:07.5308483Z             {
2026-06-22T02:37:07.5308622Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:37:07.5308731Z               "line": 305
2026-06-22T02:37:07.5308841Z             },
2026-06-22T02:37:07.5309031Z             {
2026-06-22T02:37:07.5309175Z               "path": "crates/spt-daemon/src/presence.rs",
2026-06-22T02:37:07.5309392Z               "line": 336
2026-06-22T02:37:07.5309497Z             },
2026-06-22T02:37:07.5309603Z             {
2026-06-22T02:37:07.5309759Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5309860Z               "line": 1217
2026-06-22T02:37:07.5309956Z             },
2026-06-22T02:37:07.5310074Z             {
2026-06-22T02:37:07.5310209Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5310323Z               "line": 1163
2026-06-22T02:37:07.5310423Z             }
2026-06-22T02:37:07.5310533Z           ]
2026-06-22T02:37:07.5310633Z         }
2026-06-22T02:37:07.5310737Z       }
2026-06-22T02:37:07.5310843Z     },
2026-06-22T02:37:07.5310942Z     {
2026-06-22T02:37:07.5311052Z       "id": "REQ-RC-1",
2026-06-22T02:37:07.5313057Z       "title": "`spt rc <id>` — user CLI attaching a local terminal to a broker-held PTY, reusing the cross-node attach machinery (attach.rs request_attach → send_attach_input pump, spt-net AttachRecord codec); local attach is the degenerate single-node case of the cross-node path (rides REQ-TERM-3 byte-stream streaming). Read-only `--view` (watch, no stdin forwarded). Clean detach that does NOT terminate the broker-held session (KNOWN-HAZARDS: PTY ownership stays with the broker; no termination on detach). Explicit detach keybind that cannot collide with harness passthrough input (legacy capsule used a ctrl-b prefix); documented. ConPTY DSR auto-answer in the attach reader (hazard 5.5).",
2026-06-22T02:37:07.5313209Z       "requiredStages": [
2026-06-22T02:37:07.5313318Z         "impl",
2026-06-22T02:37:07.5313424Z         "unit",
2026-06-22T02:37:07.5313528Z         "int"
2026-06-22T02:37:07.5313638Z       ],
2026-06-22T02:37:07.5313744Z       "stages": {
2026-06-22T02:37:07.5313853Z         "doc": {
2026-06-22T02:37:07.5313963Z           "complete": false,
2026-06-22T02:37:07.5314077Z           "evidence": []
2026-06-22T02:37:07.5314182Z         },
2026-06-22T02:37:07.5314287Z         "impl": {
2026-06-22T02:37:07.5314420Z           "complete": true,
2026-06-22T02:37:07.5314529Z           "evidence": [
2026-06-22T02:37:07.5314638Z             {
2026-06-22T02:37:07.5314784Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.5314897Z               "line": 1038
2026-06-22T02:37:07.5314999Z             },
2026-06-22T02:37:07.5315113Z             {
2026-06-22T02:37:07.5315265Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.5315375Z               "line": 1978
2026-06-22T02:37:07.5315484Z             },
2026-06-22T02:37:07.5315585Z             {
2026-06-22T02:37:07.5315733Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5315842Z               "line": 967
2026-06-22T02:37:07.5315953Z             },
2026-06-22T02:37:07.5316062Z             {
2026-06-22T02:37:07.5316205Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5316319Z               "line": 1001
2026-06-22T02:37:07.5316433Z             },
2026-06-22T02:37:07.5316549Z             {
2026-06-22T02:37:07.5316671Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5316786Z               "line": 22
2026-06-22T02:37:07.5316897Z             },
2026-06-22T02:37:07.5317000Z             {
2026-06-22T02:37:07.5317128Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5317345Z               "line": 701
2026-06-22T02:37:07.5317450Z             }
2026-06-22T02:37:07.5317551Z           ]
2026-06-22T02:37:07.5317660Z         },
2026-06-22T02:37:07.5317769Z         "int": {
2026-06-22T02:37:07.5317894Z           "complete": true,
2026-06-22T02:37:07.5317994Z           "evidence": [
2026-06-22T02:37:07.5318103Z             {
2026-06-22T02:37:07.5318252Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.5318361Z               "line": 261
2026-06-22T02:37:07.5318472Z             },
2026-06-22T02:37:07.5318576Z             {
2026-06-22T02:37:07.5318718Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.5318905Z               "line": 288
2026-06-22T02:37:07.5319077Z             },
2026-06-22T02:37:07.5319177Z             {
2026-06-22T02:37:07.5319329Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.5319445Z               "line": 416
2026-06-22T02:37:07.5319539Z             }
2026-06-22T02:37:07.5319654Z           ]
2026-06-22T02:37:07.5319750Z         },
2026-06-22T02:37:07.5319854Z         "unit": {
2026-06-22T02:37:07.5319957Z           "complete": true,
2026-06-22T02:37:07.5320067Z           "evidence": [
2026-06-22T02:37:07.5320173Z             {
2026-06-22T02:37:07.5320314Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5320435Z               "line": 1327
2026-06-22T02:37:07.5320554Z             },
2026-06-22T02:37:07.5320658Z             {
2026-06-22T02:37:07.5320788Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5320901Z               "line": 1133
2026-06-22T02:37:07.5321011Z             },
2026-06-22T02:37:07.5321121Z             {
2026-06-22T02:37:07.5321259Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5321365Z               "line": 1162
2026-06-22T02:37:07.5321460Z             },
2026-06-22T02:37:07.5321560Z             {
2026-06-22T02:37:07.5321685Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5321798Z               "line": 1175
2026-06-22T02:37:07.5321903Z             }
2026-06-22T02:37:07.5322009Z           ]
2026-06-22T02:37:07.5322112Z         }
2026-06-22T02:37:07.5322221Z       }
2026-06-22T02:37:07.5322317Z     },
2026-06-22T02:37:07.5322407Z     {
2026-06-22T02:37:07.5322538Z       "id": "REQ-RC-KEY-VT-TRANSLATE",
2026-06-22T02:37:07.5328202Z       "title": "On Windows, `spt rc` translates CONSOLE KEY EVENTS to standard xterm VT so ALL keys reach the hosted harness — arrows/Home/End/PgUp/PgDn/Insert/Delete/F-keys, every modifier combo, Backspace/Ctrl+Backspace — not just the byte-emitting ones. ROOT (operator HITL, doyle /diagnose): `spt rc` reads raw STDIN BYTES (spawn_stdin_reader, std::io::stdin().read); on the Windows LEGACY console (no ENABLE_VIRTUAL_TERMINAL_INPUT) the special keys produce console KEY_EVENTs, NOT stdin bytes, so the byte-pump sees nothing → those keys are DEAD. Enabling ENABLE_VIRTUAL_TERMINAL_INPUT was rejected (W7 dc07c39): on Windows Terminal it yields harness-specific win32-input-mode + broke ctrl-b detach. FIX (agnostic, full fidelity): on Windows, replace the stdin byte-read with a crossterm EVENT source (crossterm 0.28 already a dep; the picker already reads events) and translate each KeyEvent → STANDARD xterm VT bytes via a PURE translate_key_event(KeyEvent)->Vec<u8> (copy a known-correct xterm table verbatim, ADR-0001 spirit), forwarded through the SAME rc pump — the harness receives ordinary xterm VT (harness-AGNOSTIC, no win32-input-mode). Press-only (drop Repeat/Release). Detach stays the ctrl-b+'d' PREFIX, event-sourced (doyle Option B): Ctrl+B arms; armed+plain-'d'⇒Detach; armed+Ctrl+B⇒emit literal 0x02; armed+other⇒0x02 then translate(other). Non-tty stdin (piped/tests) → FALL BACK to the byte-read path (keeps e2e byte-injection working). UNIX UNCHANGED (its raw-mode byte stream already delivers proper VT; cfg-split, zero Unix regression). SUPERSEDES the W7 normalize_key_byte swap on Windows — the translator emits 0x7f for Backspace and 0x08 for Ctrl+Backspace natively (REQ-HAZARD-RC-INPUT-KEY-ENCODING folded in). NO int (a live interactive console can't be driven in CI — HITL, REQ-RUN-PICKER/RC-1 precedent); the exhaustive non-vacuous translate_key_event mapping unit + the event-detach unit ARE the surface. (v0.13.0)",
2026-06-22T02:37:07.5328512Z       "requiredStages": [
2026-06-22T02:37:07.5328616Z         "doc",
2026-06-22T02:37:07.5328712Z         "impl",
2026-06-22T02:37:07.5328817Z         "unit"
2026-06-22T02:37:07.5328921Z       ],
2026-06-22T02:37:07.5329117Z       "stages": {
2026-06-22T02:37:07.5329217Z         "doc": {
2026-06-22T02:37:07.5329337Z           "complete": true,
2026-06-22T02:37:07.5329579Z           "evidence": [
2026-06-22T02:37:07.5329676Z             {
2026-06-22T02:37:07.5329803Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5329913Z               "line": 345
2026-06-22T02:37:07.5330010Z             },
2026-06-22T02:37:07.5330117Z             {
2026-06-22T02:37:07.5330252Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.5330377Z               "line": 440
2026-06-22T02:37:07.5330484Z             }
2026-06-22T02:37:07.5330579Z           ]
2026-06-22T02:37:07.5330680Z         },
2026-06-22T02:37:07.5330785Z         "impl": {
2026-06-22T02:37:07.5330904Z           "complete": true,
2026-06-22T02:37:07.5331009Z           "evidence": [
2026-06-22T02:37:07.5331118Z             {
2026-06-22T02:37:07.5331243Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5331362Z               "line": 226
2026-06-22T02:37:07.5331461Z             },
2026-06-22T02:37:07.5331572Z             {
2026-06-22T02:37:07.5331705Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5331819Z               "line": 285
2026-06-22T02:37:07.5331921Z             },
2026-06-22T02:37:07.5332029Z             {
2026-06-22T02:37:07.5332158Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5332264Z               "line": 300
2026-06-22T02:37:07.5332372Z             },
2026-06-22T02:37:07.5332472Z             {
2026-06-22T02:37:07.5332598Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5332701Z               "line": 315
2026-06-22T02:37:07.5332805Z             },
2026-06-22T02:37:07.5332915Z             {
2026-06-22T02:37:07.5333042Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5333146Z               "line": 364
2026-06-22T02:37:07.5333252Z             }
2026-06-22T02:37:07.5333356Z           ]
2026-06-22T02:37:07.5333461Z         },
2026-06-22T02:37:07.5333562Z         "int": {
2026-06-22T02:37:07.5333666Z           "complete": false,
2026-06-22T02:37:07.5333775Z           "evidence": []
2026-06-22T02:37:07.5333886Z         },
2026-06-22T02:37:07.5333986Z         "unit": {
2026-06-22T02:37:07.5334095Z           "complete": true,
2026-06-22T02:37:07.5334206Z           "evidence": [
2026-06-22T02:37:07.5334305Z             {
2026-06-22T02:37:07.5334439Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5334535Z               "line": 1190
2026-06-22T02:37:07.5334648Z             },
2026-06-22T02:37:07.5334758Z             {
2026-06-22T02:37:07.5334887Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5334997Z               "line": 1305
2026-06-22T02:37:07.5335088Z             }
2026-06-22T02:37:07.5335197Z           ]
2026-06-22T02:37:07.5335297Z         }
2026-06-22T02:37:07.5335403Z       }
2026-06-22T02:37:07.5335512Z     },
2026-06-22T02:37:07.5335610Z     {
2026-06-22T02:37:07.5335734Z       "id": "REQ-RC-MOUSE-FORWARD",
2026-06-22T02:37:07.5340115Z       "title": "On Windows, `spt rc` must FORWARD scroll-wheel events to the harness when the harness has mouse reporting on. ROOT (operator HITL): P1's RawGuard EnableMouseCapture (added for right-click paste, REQ-RC-WIN-PASTE) makes Windows Terminal forward ALL mouse — including the scroll wheel — to rc instead of scrolling its own buffer, but the rc mouse handler dropped everything except right-button-down → scroll DIED (and WT's native scrollback is stolen by the capture). Operator ruling: keep mouse capture + right-click bracketed paste AND forward scroll to the harness. FIX (doyle design, cfg(windows), folds into the rc mouse handler): TRACK the harness's mouse-reporting mode by scanning its OUTPUT stream for the DECSET set/reset — ESC[?1000h/1002h/1003h (mouse on) + ESC[?1006h (SGR ext) and their ...l (off) — into a shared MouseMode{enabled,sgr} (pump writes from output, stdin reader reads); the scan survives a sequence SPLIT across output chunks (a bounded carry buffer). The mouse handler: right-button-DOWN -> bracketed clipboard paste (unchanged, REQ-RC-WIN-PASTE); ScrollUp/Down -> translate to an xterm SGR mouse report (ESC[<64;col+1;row+1M up / ESC[<65;..M down, 0-based crossterm -> 1-based xterm) and forward ONLY when enabled && sgr (else DROP — a legacy X10 report the harness may not parse is garbage); Moved/drag/left/middle -> DROP (scroll is the operator's need; click-forward risks garbage, no click-to-position). Unix UNCHANGED (no capture; the terminal scrolls natively). (v0.13.0)",
2026-06-22T02:37:07.5340532Z       "requiredStages": [
2026-06-22T02:37:07.5340636Z         "doc",
2026-06-22T02:37:07.5340745Z         "impl",
2026-06-22T02:37:07.5340851Z         "unit"
2026-06-22T02:37:07.5340956Z       ],
2026-06-22T02:37:07.5341059Z       "stages": {
2026-06-22T02:37:07.5341169Z         "doc": {
2026-06-22T02:37:07.5341298Z           "complete": true,
2026-06-22T02:37:07.5341411Z           "evidence": [
2026-06-22T02:37:07.5341517Z             {
2026-06-22T02:37:07.5341650Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.5341764Z               "line": 461
2026-06-22T02:37:07.5341870Z             }
2026-06-22T02:37:07.5341984Z           ]
2026-06-22T02:37:07.5342083Z         },
2026-06-22T02:37:07.5342195Z         "impl": {
2026-06-22T02:37:07.5342308Z           "complete": true,
2026-06-22T02:37:07.5342417Z           "evidence": [
2026-06-22T02:37:07.5342519Z             {
2026-06-22T02:37:07.5342642Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5342752Z               "line": 421
2026-06-22T02:37:07.5342862Z             },
2026-06-22T02:37:07.5342966Z             {
2026-06-22T02:37:07.5343100Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5343200Z               "line": 437
2026-06-22T02:37:07.5343304Z             }
2026-06-22T02:37:07.5343408Z           ]
2026-06-22T02:37:07.5343517Z         },
2026-06-22T02:37:07.5343616Z         "int": {
2026-06-22T02:37:07.5343735Z           "complete": false,
2026-06-22T02:37:07.5343850Z           "evidence": []
2026-06-22T02:37:07.5343954Z         },
2026-06-22T02:37:07.5344064Z         "unit": {
2026-06-22T02:37:07.5344179Z           "complete": true,
2026-06-22T02:37:07.5344302Z           "evidence": [
2026-06-22T02:37:07.5344409Z             {
2026-06-22T02:37:07.5344532Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5344640Z               "line": 1440
2026-06-22T02:37:07.5344747Z             },
2026-06-22T02:37:07.5344856Z             {
2026-06-22T02:37:07.5344989Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5345099Z               "line": 1459
2026-06-22T02:37:07.5345199Z             },
2026-06-22T02:37:07.5345304Z             {
2026-06-22T02:37:07.5345433Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5345543Z               "line": 1471
2026-06-22T02:37:07.5345648Z             },
2026-06-22T02:37:07.5345757Z             {
2026-06-22T02:37:07.5345886Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5345992Z               "line": 1499
2026-06-22T02:37:07.5346091Z             }
2026-06-22T02:37:07.5346199Z           ]
2026-06-22T02:37:07.5346304Z         }
2026-06-22T02:37:07.5346413Z       }
2026-06-22T02:37:07.5346516Z     },
2026-06-22T02:37:07.5346626Z     {
2026-06-22T02:37:07.5346756Z       "id": "REQ-RC-WIN-PASTE",
2026-06-22T02:37:07.5351516Z       "title": "In an `spt rc` session neither ctrl+V nor right-click pastes (CC explicitly supports ctrl+V). ROOT (doyle /diagnose): RawGuard does only enable_raw_mode (no bracketed paste / no mouse capture / no clipboard interception); the Windows console delivers a paste as synthetic per-char KEY EVENTs (no crossterm Event::Paste), and ctrl+V translates to bare ^V forwarded to CC — but CC runs DAEMON-SIDE with NO access to the operator's LOCAL clipboard, so remote paste is fundamentally CLIENT-ORIGINATED. A multi-line paste-as-keys also becomes a \\r submit-storm. FIX (doyle design, V0.13.0-P1-RC-PASTE-DESIGN.md, cfg(windows), folds into the bug-2 event path): on a paste gesture rc reads the LOCAL clipboard + forwards a BRACKETED PASTE (ESC[200~ + content + ESC[201~); CC has bracketed-paste mode on (its TUI sets ESC[?2004h) so it treats it as a paste — content intact, no submit-storm, harness-AGNOSTIC. ctrl+V: intercept Char('v')+CONTROL in the event loop -> read_clipboard -> bracketed paste. Right-click: RawGuard also EnableMouseCapture (disables console QuickEdit + enables ENABLE_MOUSE_INPUT so right-click surfaces as Event::Mouse on legacy cmd/powershell) -> right-button -> read_clipboard -> bracketed paste; DROP all other mouse (CC has no mouse features, operator-confirmed, so capture costs nothing). read_clipboard = clipboard-win crate (cfg(windows), minimal); empty/failed = clean no-op. Content forwarded VERBATIM (literal pasted text, no per-char translation). Unix UNCHANGED (its terminal pastes natively through the byte pump). DEPENDS ON P0 (a paste chunk must not wedge the broker). (v0.13.0)",
2026-06-22T02:37:07.5351868Z       "requiredStages": [
2026-06-22T02:37:07.5351976Z         "doc",
2026-06-22T02:37:07.5352091Z         "impl",
2026-06-22T02:37:07.5352202Z         "unit"
2026-06-22T02:37:07.5352305Z       ],
2026-06-22T02:37:07.5352416Z       "stages": {
2026-06-22T02:37:07.5352526Z         "doc": {
2026-06-22T02:37:07.5352644Z           "complete": true,
2026-06-22T02:37:07.5352755Z           "evidence": [
2026-06-22T02:37:07.5352864Z             {
2026-06-22T02:37:07.5352997Z               "path": "docs/KNOWN-HAZARDS.md",
2026-06-22T02:37:07.5353116Z               "line": 447
2026-06-22T02:37:07.5353216Z             }
2026-06-22T02:37:07.5353317Z           ]
2026-06-22T02:37:07.5353427Z         },
2026-06-22T02:37:07.5353531Z         "impl": {
2026-06-22T02:37:07.5353641Z           "complete": true,
2026-06-22T02:37:07.5353751Z           "evidence": [
2026-06-22T02:37:07.5353854Z             {
2026-06-22T02:37:07.5353987Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5354096Z               "line": 395
2026-06-22T02:37:07.5354200Z             },
2026-06-22T02:37:07.5354305Z             {
2026-06-22T02:37:07.5354434Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5354548Z               "line": 411
2026-06-22T02:37:07.5354644Z             },
2026-06-22T02:37:07.5354749Z             {
2026-06-22T02:37:07.5354867Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5354978Z               "line": 454
2026-06-22T02:37:07.5355082Z             },
2026-06-22T02:37:07.5355196Z             {
2026-06-22T02:37:07.5355330Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5355439Z               "line": 468
2026-06-22T02:37:07.5355544Z             },
2026-06-22T02:37:07.5355641Z             {
2026-06-22T02:37:07.5355768Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5355879Z               "line": 479
2026-06-22T02:37:07.5355984Z             }
2026-06-22T02:37:07.5356093Z           ]
2026-06-22T02:37:07.5356194Z         },
2026-06-22T02:37:07.5356308Z         "int": {
2026-06-22T02:37:07.5356427Z           "complete": false,
2026-06-22T02:37:07.5356547Z           "evidence": []
2026-06-22T02:37:07.5356651Z         },
2026-06-22T02:37:07.5356764Z         "unit": {
2026-06-22T02:37:07.5356888Z           "complete": true,
2026-06-22T02:37:07.5357001Z           "evidence": [
2026-06-22T02:37:07.5357109Z             {
2026-06-22T02:37:07.5357234Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5357353Z               "line": 1381
2026-06-22T02:37:07.5357448Z             },
2026-06-22T02:37:07.5357621Z             {
2026-06-22T02:37:07.5357753Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5357864Z               "line": 1402
2026-06-22T02:37:07.5357974Z             },
2026-06-22T02:37:07.5358077Z             {
2026-06-22T02:37:07.5358202Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5358312Z               "line": 1423
2026-06-22T02:37:07.5358421Z             }
2026-06-22T02:37:07.5358527Z           ]
2026-06-22T02:37:07.5358626Z         }
2026-06-22T02:37:07.5358726Z       }
2026-06-22T02:37:07.5358818Z     },
2026-06-22T02:37:07.5358926Z     {
2026-06-22T02:37:07.5359128Z       "id": "REQ-RCVIEW-1",
2026-06-22T02:37:07.5363649Z       "title": "Remote-attach controller/viewer model (CONTEXT.md:317): a session's broker OutputLog serves ONE interactive controller (input + EXCLUSIVE PTY resize; its viewport sets the size, sent on attach + every window change via crossterm Event::Resize) plus ANY NUMBER of read-only `--view` attachers (output-only, no input, no resize; client-side letterbox — center+pad when larger, clip+1-line indicator when smaller; only the local ctrl-b d detach chord). Attach intent is three-valued (`Viewer | Control | Take`, wire-default Control): Control to a FREE endpoint becomes controller, Control to a CONTROLLED endpoint is REFUSED with guidance (`--view`/`--take`) — never auto-viewer, never silent-displace. Wire adds (additive, N-1 skip-unknown): `Request.intent`, `Resize{rows,cols}` (controller-only), `Size{rows,cols}` (→viewer), `Displaced{by}` (→displaced controller). The brain-resume cursor (delivered_through, ADR-0018) tracks the CONTROLLER ONLY; viewers replay from their own from_seq and never move it. Dormancy keys on the controller ONLY: controller attach wakes / controller detach goes dormant (even with viewers present); viewer attach/detach is wake-neutral and may watch a dormant endpoint as-is. v1: viewing is gated identically to driving — a viewer runs the same access_check(Unsolicited) as a controller (watching reveals full session contents = a real disclosure); a lighter distinct watch-gate is deferred to cross-subnet/finer-consent (CONTEXT.md:317 'driving ≠ watching' = the future seam).",
2026-06-22T02:37:07.5363814Z       "requiredStages": [
2026-06-22T02:37:07.5363911Z         "doc",
2026-06-22T02:37:07.5364010Z         "impl",
2026-06-22T02:37:07.5364114Z         "unit",
2026-06-22T02:37:07.5364221Z         "int"
2026-06-22T02:37:07.5364325Z       ],
2026-06-22T02:37:07.5364429Z       "stages": {
2026-06-22T02:37:07.5364538Z         "doc": {
2026-06-22T02:37:07.5364652Z           "complete": true,
2026-06-22T02:37:07.5364765Z           "evidence": [
2026-06-22T02:37:07.5364874Z             {
2026-06-22T02:37:07.5364999Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5365113Z               "line": 342
2026-06-22T02:37:07.5365218Z             }
2026-06-22T02:37:07.5365328Z           ]
2026-06-22T02:37:07.5365418Z         },
2026-06-22T02:37:07.5365529Z         "impl": {
2026-06-22T02:37:07.5365648Z           "complete": true,
2026-06-22T02:37:07.5365761Z           "evidence": [
2026-06-22T02:37:07.5365867Z             {
2026-06-22T02:37:07.5366023Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.5366139Z               "line": 528
2026-06-22T02:37:07.5366247Z             },
2026-06-22T02:37:07.5366357Z             {
2026-06-22T02:37:07.5366502Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.5366619Z               "line": 628
2026-06-22T02:37:07.5366729Z             },
2026-06-22T02:37:07.5366831Z             {
2026-06-22T02:37:07.5366972Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.5367088Z               "line": 639
2026-06-22T02:37:07.5367192Z             },
2026-06-22T02:37:07.5367296Z             {
2026-06-22T02:37:07.5367444Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.5367547Z               "line": 41
2026-06-22T02:37:07.5367651Z             },
2026-06-22T02:37:07.5367857Z             {
2026-06-22T02:37:07.5368003Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.5368105Z               "line": 62
2026-06-22T02:37:07.5368205Z             },
2026-06-22T02:37:07.5368309Z             {
2026-06-22T02:37:07.5368457Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.5368566Z               "line": 309
2026-06-22T02:37:07.5368672Z             },
2026-06-22T02:37:07.5368777Z             {
2026-06-22T02:37:07.5368905Z               "path": "crates/spt/src/rc.rs",
2026-06-22T02:37:07.5369096Z               "line": 701
2026-06-22T02:37:07.5369200Z             }
2026-06-22T02:37:07.5369454Z           ]
2026-06-22T02:37:07.5369559Z         },
2026-06-22T02:37:07.5369669Z         "int": {
2026-06-22T02:37:07.5369773Z           "complete": true,
2026-06-22T02:37:07.5369881Z           "evidence": [
2026-06-22T02:37:07.5369986Z             {
2026-06-22T02:37:07.5370132Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.5370246Z               "line": 916
2026-06-22T02:37:07.5370351Z             },
2026-06-22T02:37:07.5370452Z             {
2026-06-22T02:37:07.5370590Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.5370695Z               "line": 956
2026-06-22T02:37:07.5370795Z             },
2026-06-22T02:37:07.5370899Z             {
2026-06-22T02:37:07.5371043Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.5371152Z               "line": 1003
2026-06-22T02:37:07.5371258Z             },
2026-06-22T02:37:07.5371353Z             {
2026-06-22T02:37:07.5371500Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.5371611Z               "line": 1155
2026-06-22T02:37:07.5371715Z             }
2026-06-22T02:37:07.5371815Z           ]
2026-06-22T02:37:07.5371912Z         },
2026-06-22T02:37:07.5372020Z         "unit": {
2026-06-22T02:37:07.5372120Z           "complete": true,
2026-06-22T02:37:07.5372236Z           "evidence": [
2026-06-22T02:37:07.5372340Z             {
2026-06-22T02:37:07.5372478Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.5372584Z               "line": 175
2026-06-22T02:37:07.5372687Z             },
2026-06-22T02:37:07.5372796Z             {
2026-06-22T02:37:07.5372936Z               "path": "crates/spt-net/src/net/attach.rs",
2026-06-22T02:37:07.5373045Z               "line": 195
2026-06-22T02:37:07.5373149Z             }
2026-06-22T02:37:07.5373255Z           ]
2026-06-22T02:37:07.5373359Z         }
2026-06-22T02:37:07.5373464Z       }
2026-06-22T02:37:07.5373565Z     },
2026-06-22T02:37:07.5373651Z     {
2026-06-22T02:37:07.5373774Z       "id": "REQ-REACH-1",
2026-06-22T02:37:07.5373950Z       "title": "Off-node remote-drive detection + file transfer",
2026-06-22T02:37:07.5374069Z       "requiredStages": [
2026-06-22T02:37:07.5374171Z         "impl",
2026-06-22T02:37:07.5379112Z         "unit",
2026-06-22T02:37:07.5379260Z         "int"
2026-06-22T02:37:07.5379370Z       ],
2026-06-22T02:37:07.5379546Z       "stages": {
2026-06-22T02:37:07.5379647Z         "doc": {
2026-06-22T02:37:07.5379775Z           "complete": false,
2026-06-22T02:37:07.5379886Z           "evidence": []
2026-06-22T02:37:07.5379990Z         },
2026-06-22T02:37:07.5380109Z         "impl": {
2026-06-22T02:37:07.5380220Z           "complete": true,
2026-06-22T02:37:07.5380333Z           "evidence": [
2026-06-22T02:37:07.5380437Z             {
2026-06-22T02:37:07.5380604Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.5380730Z               "line": 628
2026-06-22T02:37:07.5380835Z             },
2026-06-22T02:37:07.5380946Z             {
2026-06-22T02:37:07.5381092Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:37:07.5381208Z               "line": 76
2026-06-22T02:37:07.5381303Z             },
2026-06-22T02:37:07.5381407Z             {
2026-06-22T02:37:07.5381542Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:37:07.5381646Z               "line": 222
2026-06-22T02:37:07.5381908Z             },
2026-06-22T02:37:07.5382013Z             {
2026-06-22T02:37:07.5382162Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:37:07.5382270Z               "line": 422
2026-06-22T02:37:07.5382380Z             },
2026-06-22T02:37:07.5382482Z             {
2026-06-22T02:37:07.5382623Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:37:07.5382733Z               "line": 529
2026-06-22T02:37:07.5382829Z             },
2026-06-22T02:37:07.5382938Z             {
2026-06-22T02:37:07.5383072Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:37:07.5383182Z               "line": 39
2026-06-22T02:37:07.5383390Z             },
2026-06-22T02:37:07.5383496Z             {
2026-06-22T02:37:07.5383633Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.5383733Z               "line": 301
2026-06-22T02:37:07.5383844Z             },
2026-06-22T02:37:07.5383938Z             {
2026-06-22T02:37:07.5384082Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:37:07.5384191Z               "line": 88
2026-06-22T02:37:07.5384300Z             },
2026-06-22T02:37:07.5384402Z             {
2026-06-22T02:37:07.5384534Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:37:07.5384653Z               "line": 98
2026-06-22T02:37:07.5384759Z             },
2026-06-22T02:37:07.5384863Z             {
2026-06-22T02:37:07.5385007Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5385117Z               "line": 233
2026-06-22T02:37:07.5385231Z             }
2026-06-22T02:37:07.5385316Z           ]
2026-06-22T02:37:07.5385431Z         },
2026-06-22T02:37:07.5385539Z         "int": {
2026-06-22T02:37:07.5385644Z           "complete": true,
2026-06-22T02:37:07.5385772Z           "evidence": [
2026-06-22T02:37:07.5385871Z             {
2026-06-22T02:37:07.5386033Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5386143Z               "line": 415
2026-06-22T02:37:07.5386242Z             },
2026-06-22T02:37:07.5386348Z             {
2026-06-22T02:37:07.5386486Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5386600Z               "line": 520
2026-06-22T02:37:07.5386701Z             },
2026-06-22T02:37:07.5386810Z             {
2026-06-22T02:37:07.5386963Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5387082Z               "line": 998
2026-06-22T02:37:07.5387191Z             },
2026-06-22T02:37:07.5387292Z             {
2026-06-22T02:37:07.5387445Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5387559Z               "line": 1383
2026-06-22T02:37:07.5387679Z             }
2026-06-22T02:37:07.5387783Z           ]
2026-06-22T02:37:07.5387884Z         },
2026-06-22T02:37:07.5387989Z         "unit": {
2026-06-22T02:37:07.5388102Z           "complete": true,
2026-06-22T02:37:07.5388213Z           "evidence": [
2026-06-22T02:37:07.5388318Z             {
2026-06-22T02:37:07.5388482Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:37:07.5388598Z               "line": 639
2026-06-22T02:37:07.5388705Z             },
2026-06-22T02:37:07.5388804Z             {
2026-06-22T02:37:07.5389020Z               "path": "crates/spt-daemon/src/xfer.rs",
2026-06-22T02:37:07.5389133Z               "line": 660
2026-06-22T02:37:07.5389235Z             },
2026-06-22T02:37:07.5389339Z             {
2026-06-22T02:37:07.5389482Z               "path": "crates/spt-daemon/tests/attach.rs",
2026-06-22T02:37:07.5389596Z               "line": 771
2026-06-22T02:37:07.5389705Z             },
2026-06-22T02:37:07.5389797Z             {
2026-06-22T02:37:07.5389958Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:37:07.5390063Z               "line": 93
2026-06-22T02:37:07.5390170Z             },
2026-06-22T02:37:07.5390273Z             {
2026-06-22T02:37:07.5390421Z               "path": "crates/spt-daemon/tests/xfer.rs",
2026-06-22T02:37:07.5390630Z               "line": 224
2026-06-22T02:37:07.5390726Z             },
2026-06-22T02:37:07.5390828Z             {
2026-06-22T02:37:07.5390973Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:37:07.5391083Z               "line": 96
2026-06-22T02:37:07.5391192Z             },
2026-06-22T02:37:07.5391286Z             {
2026-06-22T02:37:07.5391428Z               "path": "crates/spt-net/src/net/xfer.rs",
2026-06-22T02:37:07.5391535Z               "line": 146
2026-06-22T02:37:07.5391638Z             },
2026-06-22T02:37:07.5391743Z             {
2026-06-22T02:37:07.5391882Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.5392093Z               "line": 698
2026-06-22T02:37:07.5392202Z             },
2026-06-22T02:37:07.5392310Z             {
2026-06-22T02:37:07.5392449Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:37:07.5392554Z               "line": 118
2026-06-22T02:37:07.5392663Z             },
2026-06-22T02:37:07.5392769Z             {
2026-06-22T02:37:07.5392916Z               "path": "crates/spt-store/src/xfer.rs",
2026-06-22T02:37:07.5393022Z               "line": 148
2026-06-22T02:37:07.5393131Z             },
2026-06-22T02:37:07.5393226Z             {
2026-06-22T02:37:07.5393371Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5393478Z               "line": 928
2026-06-22T02:37:07.5393593Z             }
2026-06-22T02:37:07.5393695Z           ]
2026-06-22T02:37:07.5393789Z         }
2026-06-22T02:37:07.5393897Z       }
2026-06-22T02:37:07.5393998Z     },
2026-06-22T02:37:07.5394099Z     {
2026-06-22T02:37:07.5394207Z       "id": "REQ-REACH-2",
2026-06-22T02:37:07.5394390Z       "title": "Remote command execution (deferred, consent-gated)",
2026-06-22T02:37:07.5394522Z       "requiredStages": [],
2026-06-22T02:37:07.5394623Z       "stages": {
2026-06-22T02:37:07.5394737Z         "doc": {
2026-06-22T02:37:07.5394837Z           "complete": false,
2026-06-22T02:37:07.5394947Z           "evidence": []
2026-06-22T02:37:07.5395057Z         },
2026-06-22T02:37:07.5395166Z         "impl": {
2026-06-22T02:37:07.5395277Z           "complete": false,
2026-06-22T02:37:07.5395385Z           "evidence": []
2026-06-22T02:37:07.5395495Z         },
2026-06-22T02:37:07.5395601Z         "int": {
2026-06-22T02:37:07.5395714Z           "complete": false,
2026-06-22T02:37:07.5395819Z           "evidence": []
2026-06-22T02:37:07.5395926Z         },
2026-06-22T02:37:07.5396038Z         "unit": {
2026-06-22T02:37:07.5396152Z           "complete": false,
2026-06-22T02:37:07.5396271Z           "evidence": []
2026-06-22T02:37:07.5396374Z         }
2026-06-22T02:37:07.5396483Z       }
2026-06-22T02:37:07.5396593Z     },
2026-06-22T02:37:07.5396703Z     {
2026-06-22T02:37:07.5396836Z       "id": "REQ-READY-AGENT-RESUME",
2026-06-22T02:37:07.5400405Z       "title": "An offline ReadyAgent shows in `spt endpoint run`'s picker Resume-from-history and resumes correctly — closing the gap that today only LiveAgents do. ROOT: a harness-hosted ready bind (ReadyAgent::start_homed, ready.rs) writes info.json DIRECTLY and never appends the session ledger (unlike the shared establish_perch:250 live path), so a ready agent — though it has a session_id — produces ZERO ledger rows → the picker's offline+local Resume-from-history (which gates on ledger rows) never offers it. FIX (1): ledger the ready bind (ReadyAgent::start_homed → sessions::append Boot, mirroring establish_perch). FIX (2): `spt endpoint run --resume <session>` honors the adapter MANIFEST's endpoint TYPE — a ReadyAgent manifest (no [session.psyche_init]) resumes as a ready endpoint (poll listener, NO psyche-host); a LiveAgent (with psyche_init) as live. NO new bringup mode + NO picker changes (operator 2026-06-18): `spt endpoint run` is the spt-hosted ENDPOINT bringup for BOTH types, the type IS the adapter-manifest's concern (psyche-host already keys on psyche_init presence) — so (2) likely already holds; VERIFY at code, build only the residual. (v0.12.0)",
2026-06-22T02:37:07.5400576Z       "requiredStages": [
2026-06-22T02:37:07.5400796Z         "doc",
2026-06-22T02:37:07.5400900Z         "impl",
2026-06-22T02:37:07.5401006Z         "unit",
2026-06-22T02:37:07.5401115Z         "int"
2026-06-22T02:37:07.5401210Z       ],
2026-06-22T02:37:07.5401321Z       "stages": {
2026-06-22T02:37:07.5401426Z         "doc": {
2026-06-22T02:37:07.5401548Z           "complete": true,
2026-06-22T02:37:07.5401671Z           "evidence": [
2026-06-22T02:37:07.5401775Z             {
2026-06-22T02:37:07.5401888Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5401998Z               "line": 372
2026-06-22T02:37:07.5402109Z             }
2026-06-22T02:37:07.5402203Z           ]
2026-06-22T02:37:07.5402413Z         },
2026-06-22T02:37:07.5402522Z         "impl": {
2026-06-22T02:37:07.5402638Z           "complete": true,
2026-06-22T02:37:07.5402747Z           "evidence": [
2026-06-22T02:37:07.5402856Z             {
2026-06-22T02:37:07.5402991Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.5403109Z               "line": 110
2026-06-22T02:37:07.5403214Z             }
2026-06-22T02:37:07.5403316Z           ]
2026-06-22T02:37:07.5403415Z         },
2026-06-22T02:37:07.5403524Z         "int": {
2026-06-22T02:37:07.5403635Z           "complete": true,
2026-06-22T02:37:07.5403753Z           "evidence": [
2026-06-22T02:37:07.5403853Z             {
2026-06-22T02:37:07.5404024Z               "path": "crates/spt/tests/ready_resume_ledger_e2e.rs",
2026-06-22T02:37:07.5404144Z               "line": 26
2026-06-22T02:37:07.5404241Z             }
2026-06-22T02:37:07.5404339Z           ]
2026-06-22T02:37:07.5404443Z         },
2026-06-22T02:37:07.5404553Z         "unit": {
2026-06-22T02:37:07.5404678Z           "complete": true,
2026-06-22T02:37:07.5404781Z           "evidence": [
2026-06-22T02:37:07.5404882Z             {
2026-06-22T02:37:07.5405025Z               "path": "crates/spt-msg/src/ready.rs",
2026-06-22T02:37:07.5405129Z               "line": 320
2026-06-22T02:37:07.5405222Z             }
2026-06-22T02:37:07.5405336Z           ]
2026-06-22T02:37:07.5405439Z         }
2026-06-22T02:37:07.5405541Z       }
2026-06-22T02:37:07.5405645Z     },
2026-06-22T02:37:07.5405745Z     {
2026-06-22T02:37:07.5405861Z       "id": "REQ-REL-1",
2026-06-22T02:37:07.5406270Z       "title": "spt-releases publish-target repo: README public face, licensing split, Pages docs at the permanent lapse-proof canonical URL (ADR-0014)",
2026-06-22T02:37:07.5406389Z       "requiredStages": [
2026-06-22T02:37:07.5406495Z         "doc",
2026-06-22T02:37:07.5406603Z         "impl"
2026-06-22T02:37:07.5406712Z       ],
2026-06-22T02:37:07.5406822Z       "stages": {
2026-06-22T02:37:07.5406930Z         "doc": {
2026-06-22T02:37:07.5407048Z           "complete": true,
2026-06-22T02:37:07.5407163Z           "evidence": [
2026-06-22T02:37:07.5407263Z             {
2026-06-22T02:37:07.5407502Z               "path": "docs/adr/0014-publish-target-repo-and-lapse-proof-canonical-url.md",
2026-06-22T02:37:07.5407620Z               "line": 3
2026-06-22T02:37:07.5407725Z             }
2026-06-22T02:37:07.5407831Z           ]
2026-06-22T02:37:07.5407935Z         },
2026-06-22T02:37:07.5408045Z         "impl": {
2026-06-22T02:37:07.5408160Z           "complete": true,
2026-06-22T02:37:07.5408264Z           "evidence": [
2026-06-22T02:37:07.5408374Z             {
2026-06-22T02:37:07.5408531Z               "path": ".github/workflows/docs-publish.yml",
2026-06-22T02:37:07.5408640Z               "line": 11
2026-06-22T02:37:07.5408737Z             },
2026-06-22T02:37:07.5408841Z             {
2026-06-22T02:37:07.5409052Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5409160Z               "line": 265
2026-06-22T02:37:07.5409270Z             }
2026-06-22T02:37:07.5409381Z           ]
2026-06-22T02:37:07.5409485Z         },
2026-06-22T02:37:07.5409593Z         "int": {
2026-06-22T02:37:07.5409712Z           "complete": false,
2026-06-22T02:37:07.5409835Z           "evidence": []
2026-06-22T02:37:07.5409934Z         },
2026-06-22T02:37:07.5410154Z         "unit": {
2026-06-22T02:37:07.5410263Z           "complete": false,
2026-06-22T02:37:07.5410379Z           "evidence": []
2026-06-22T02:37:07.5410478Z         }
2026-06-22T02:37:07.5410587Z       }
2026-06-22T02:37:07.5410689Z     },
2026-06-22T02:37:07.5410798Z     {
2026-06-22T02:37:07.5410917Z       "id": "REQ-REL-2",
2026-06-22T02:37:07.5411426Z       "title": "Release asset set consumable by the self-updater: platform binaries, SHA256SUMS, SignedRelease metadata, manifest schema, mock-adapter zip; tag-triggered cross-repo pipeline",
2026-06-22T02:37:07.5411551Z       "requiredStages": [
2026-06-22T02:37:07.5411652Z         "impl",
2026-06-22T02:37:07.5411881Z         "int"
2026-06-22T02:37:07.5411986Z       ],
2026-06-22T02:37:07.5412093Z       "stages": {
2026-06-22T02:37:07.5412203Z         "doc": {
2026-06-22T02:37:07.5412313Z           "complete": true,
2026-06-22T02:37:07.5412430Z           "evidence": [
2026-06-22T02:37:07.5412535Z             {
2026-06-22T02:37:07.5412679Z               "path": "docs/RELEASE-RUNBOOK.md",
2026-06-22T02:37:07.5412797Z               "line": 6
2026-06-22T02:37:07.5412898Z             }
2026-06-22T02:37:07.5413008Z           ]
2026-06-22T02:37:07.5413106Z         },
2026-06-22T02:37:07.5413217Z         "impl": {
2026-06-22T02:37:07.5413336Z           "complete": true,
2026-06-22T02:37:07.5413440Z           "evidence": [
2026-06-22T02:37:07.5413542Z             {
2026-06-22T02:37:07.5413679Z               "path": ".github/workflows/release.yml",
2026-06-22T02:37:07.5413788Z               "line": 16
2026-06-22T02:37:07.5413895Z             },
2026-06-22T02:37:07.5414003Z             {
2026-06-22T02:37:07.5414138Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5414247Z               "line": 352
2026-06-22T02:37:07.5414346Z             },
2026-06-22T02:37:07.5414433Z             {
2026-06-22T02:37:07.5414561Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5414675Z               "line": 426
2026-06-22T02:37:07.5414777Z             },
2026-06-22T02:37:07.5414886Z             {
2026-06-22T02:37:07.5415018Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5415128Z               "line": 588
2026-06-22T02:37:07.5415228Z             },
2026-06-22T02:37:07.5415337Z             {
2026-06-22T02:37:07.5415462Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5415571Z               "line": 720
2026-06-22T02:37:07.5415661Z             }
2026-06-22T02:37:07.5415768Z           ]
2026-06-22T02:37:07.5415877Z         },
2026-06-22T02:37:07.5415981Z         "int": {
2026-06-22T02:37:07.5416097Z           "complete": true,
2026-06-22T02:37:07.5416205Z           "evidence": [
2026-06-22T02:37:07.5416319Z             {
2026-06-22T02:37:07.5416477Z               "path": "crates/spt/tests/release_verify_e2e.rs",
2026-06-22T02:37:07.5416591Z               "line": 13
2026-06-22T02:37:07.5416697Z             }
2026-06-22T02:37:07.5416792Z           ]
2026-06-22T02:37:07.5416896Z         },
2026-06-22T02:37:07.5417012Z         "unit": {
2026-06-22T02:37:07.5417131Z           "complete": false,
2026-06-22T02:37:07.5417225Z           "evidence": []
2026-06-22T02:37:07.5417334Z         }
2026-06-22T02:37:07.5417434Z       }
2026-06-22T02:37:07.5417532Z     },
2026-06-22T02:37:07.5417627Z     {
2026-06-22T02:37:07.5417738Z       "id": "REQ-REL-3",
2026-06-22T02:37:07.5418237Z       "title": "Two-key release-signing trust anchor: primary + offline never-used recovery, both pubkeys embedded in the binary's trusted set, manual local signing (ADR-0015)",
2026-06-22T02:37:07.5418353Z       "requiredStages": [
2026-06-22T02:37:07.5418457Z         "impl",
2026-06-22T02:37:07.5418566Z         "unit"
2026-06-22T02:37:07.5418672Z       ],
2026-06-22T02:37:07.5418777Z       "stages": {
2026-06-22T02:37:07.5418871Z         "doc": {
2026-06-22T02:37:07.5419077Z           "complete": false,
2026-06-22T02:37:07.5419186Z           "evidence": []
2026-06-22T02:37:07.5419293Z         },
2026-06-22T02:37:07.5419406Z         "impl": {
2026-06-22T02:37:07.5419763Z           "complete": true,
2026-06-22T02:37:07.5419888Z           "evidence": [
2026-06-22T02:37:07.5419984Z             {
2026-06-22T02:37:07.5420139Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5420249Z               "line": 237
2026-06-22T02:37:07.5420352Z             },
2026-06-22T02:37:07.5420461Z             {
2026-06-22T02:37:07.5420600Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5420714Z               "line": 289
2026-06-22T02:37:07.5420814Z             },
2026-06-22T02:37:07.5420925Z             {
2026-06-22T02:37:07.5421048Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5421263Z               "line": 329
2026-06-22T02:37:07.5421367Z             },
2026-06-22T02:37:07.5421463Z             {
2026-06-22T02:37:07.5421606Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5421706Z               "line": 353
2026-06-22T02:37:07.5421811Z             },
2026-06-22T02:37:07.5421926Z             {
2026-06-22T02:37:07.5422049Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5422165Z               "line": 394
2026-06-22T02:37:07.5422259Z             }
2026-06-22T02:37:07.5422354Z           ]
2026-06-22T02:37:07.5422451Z         },
2026-06-22T02:37:07.5422556Z         "int": {
2026-06-22T02:37:07.5422668Z           "complete": false,
2026-06-22T02:37:07.5422778Z           "evidence": []
2026-06-22T02:37:07.5422887Z         },
2026-06-22T02:37:07.5422994Z         "unit": {
2026-06-22T02:37:07.5423119Z           "complete": true,
2026-06-22T02:37:07.5423225Z           "evidence": [
2026-06-22T02:37:07.5423337Z             {
2026-06-22T02:37:07.5423492Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5423605Z               "line": 1045
2026-06-22T02:37:07.5423719Z             },
2026-06-22T02:37:07.5423820Z             {
2026-06-22T02:37:07.5423957Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5424078Z               "line": 1104
2026-06-22T02:37:07.5424186Z             }
2026-06-22T02:37:07.5424286Z           ]
2026-06-22T02:37:07.5424392Z         }
2026-06-22T02:37:07.5424497Z       }
2026-06-22T02:37:07.5424592Z     },
2026-06-22T02:37:07.5424693Z     {
2026-06-22T02:37:07.5424816Z       "id": "REQ-RUN-PICKER",
2026-06-22T02:37:07.5429618Z       "title": "Interactive `spt endpoint run` picker (ratatui TUI): bare `spt endpoint run` (no --adapter/--id) enters an in-process picker (flags-present = the REQ-HOST-RUN-1 non-interactive path, untouched). Layer 1 picks kind (Create new | Pick existing). Create-new: choose a registered kind=\"harness\" adapter with its shipped+local profiles tree-nested (registry::registered / manifest.profiles / local_profile_names) → enter a charset-validated id → start. Pick-existing: category select (left/right) over [<cwd-project> | Local node | Subnet], endpoints grouped + alphabetically sorted per category, a status square per endpoint (online green ■ / offline gray ▢ — the blue \"attached\" tri-state + Kick are DEFERRED to a broker attach-presence slice, M12-W2-RULING Q1), type-to-filter (`/`, nucleo-matcher), a pinned keybind legend, and a right-half two-pane description (harness adapter:profile · best-effort project history newest→oldest from the contextstore p-<project> branches, empty-if-none · `spt endpoint description`). Confirm layer offers status-dependent options — Attach/Start/View (rc pump / cmd_endpoint_run) · Instantiate-locally (remote) · Change-harness-adapter (offline) · Fork (cmd_fork) · Resume-from-history (offline+LOCAL only; enumerate spt_store::sessions::last_k, titles `<project> @ <ts> (…id5)`, feed session_id → cmd_endpoint_run --resume). A single action enum is the source of truth so a future tap-mode (phone PTY) layers on without re-coupling to keybinds. EVERY terminal action routes through cmd_endpoint_run / existing CLI fns — no second bringup path.",
2026-06-22T02:37:07.5429790Z       "requiredStages": [
2026-06-22T02:37:07.5429895Z         "doc",
2026-06-22T02:37:07.5430110Z         "impl",
2026-06-22T02:37:07.5430215Z         "unit"
2026-06-22T02:37:07.5430319Z       ],
2026-06-22T02:37:07.5430420Z       "stages": {
2026-06-22T02:37:07.5430535Z         "doc": {
2026-06-22T02:37:07.5430657Z           "complete": true,
2026-06-22T02:37:07.5430757Z           "evidence": [
2026-06-22T02:37:07.5430875Z             {
2026-06-22T02:37:07.5430997Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5431107Z               "line": 349
2026-06-22T02:37:07.5431208Z             }
2026-06-22T02:37:07.5431317Z           ]
2026-06-22T02:37:07.5431422Z         },
2026-06-22T02:37:07.5431527Z         "impl": {
2026-06-22T02:37:07.5431747Z           "complete": true,
2026-06-22T02:37:07.5431856Z           "evidence": [
2026-06-22T02:37:07.5431965Z             {
2026-06-22T02:37:07.5432104Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5432218Z               "line": 958
2026-06-22T02:37:07.5432323Z             },
2026-06-22T02:37:07.5432438Z             {
2026-06-22T02:37:07.5432571Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5432676Z               "line": 968
2026-06-22T02:37:07.5432787Z             },
2026-06-22T02:37:07.5432880Z             {
2026-06-22T02:37:07.5433025Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5433134Z               "line": 9
2026-06-22T02:37:07.5433237Z             },
2026-06-22T02:37:07.5433347Z             {
2026-06-22T02:37:07.5433484Z               "path": "crates/spt/src/picker/data.rs",
2026-06-22T02:37:07.5433597Z               "line": 67
2026-06-22T02:37:07.5433707Z             },
2026-06-22T02:37:07.5433813Z             {
2026-06-22T02:37:07.5433964Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T02:37:07.5434075Z               "line": 16
2026-06-22T02:37:07.5434179Z             },
2026-06-22T02:37:07.5434284Z             {
2026-06-22T02:37:07.5434418Z               "path": "crates/spt/src/picker/mod.rs",
2026-06-22T02:37:07.5434531Z               "line": 254
2026-06-22T02:37:07.5434629Z             },
2026-06-22T02:37:07.5434738Z             {
2026-06-22T02:37:07.5434875Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5434991Z               "line": 11
2026-06-22T02:37:07.5435085Z             },
2026-06-22T02:37:07.5435190Z             {
2026-06-22T02:37:07.5435330Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5435438Z               "line": 115
2026-06-22T02:37:07.5435558Z             },
2026-06-22T02:37:07.5435663Z             {
2026-06-22T02:37:07.5435801Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5435907Z               "line": 554
2026-06-22T02:37:07.5436020Z             },
2026-06-22T02:37:07.5436138Z             {
2026-06-22T02:37:07.5436277Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5436391Z               "line": 635
2026-06-22T02:37:07.5436500Z             },
2026-06-22T02:37:07.5436616Z             {
2026-06-22T02:37:07.5436757Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5436878Z               "line": 694
2026-06-22T02:37:07.5436987Z             },
2026-06-22T02:37:07.5437086Z             {
2026-06-22T02:37:07.5437221Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5437335Z               "line": 747
2026-06-22T02:37:07.5437445Z             },
2026-06-22T02:37:07.5437546Z             {
2026-06-22T02:37:07.5437679Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5437788Z               "line": 785
2026-06-22T02:37:07.5437885Z             },
2026-06-22T02:37:07.5437992Z             {
2026-06-22T02:37:07.5438127Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:37:07.5438237Z               "line": 8
2026-06-22T02:37:07.5438335Z             }
2026-06-22T02:37:07.5438435Z           ]
2026-06-22T02:37:07.5438540Z         },
2026-06-22T02:37:07.5438643Z         "int": {
2026-06-22T02:37:07.5438752Z           "complete": false,
2026-06-22T02:37:07.5438934Z           "evidence": []
2026-06-22T02:37:07.5439125Z         },
2026-06-22T02:37:07.5439220Z         "unit": {
2026-06-22T02:37:07.5439339Z           "complete": true,
2026-06-22T02:37:07.5439459Z           "evidence": [
2026-06-22T02:37:07.5439559Z             {
2026-06-22T02:37:07.5439691Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5439798Z               "line": 7638
2026-06-22T02:37:07.5439897Z             },
2026-06-22T02:37:07.5440002Z             {
2026-06-22T02:37:07.5440136Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5440245Z               "line": 7649
2026-06-22T02:37:07.5440442Z             },
2026-06-22T02:37:07.5440555Z             {
2026-06-22T02:37:07.5440689Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5440808Z               "line": 879
2026-06-22T02:37:07.5440908Z             },
2026-06-22T02:37:07.5441014Z             {
2026-06-22T02:37:07.5441151Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5441264Z               "line": 928
2026-06-22T02:37:07.5441379Z             },
2026-06-22T02:37:07.5441477Z             {
2026-06-22T02:37:07.5441624Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5441730Z               "line": 979
2026-06-22T02:37:07.5441829Z             },
2026-06-22T02:37:07.5441929Z             {
2026-06-22T02:37:07.5442059Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5442168Z               "line": 996
2026-06-22T02:37:07.5442273Z             },
2026-06-22T02:37:07.5442378Z             {
2026-06-22T02:37:07.5442511Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5442621Z               "line": 1005
2026-06-22T02:37:07.5442731Z             },
2026-06-22T02:37:07.5442831Z             {
2026-06-22T02:37:07.5442975Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5443074Z               "line": 1016
2026-06-22T02:37:07.5443188Z             },
2026-06-22T02:37:07.5443290Z             {
2026-06-22T02:37:07.5443431Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5443542Z               "line": 1038
2026-06-22T02:37:07.5443642Z             },
2026-06-22T02:37:07.5443751Z             {
2026-06-22T02:37:07.5443888Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5443997Z               "line": 1057
2026-06-22T02:37:07.5444105Z             },
2026-06-22T02:37:07.5444210Z             {
2026-06-22T02:37:07.5444354Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5444462Z               "line": 1107
2026-06-22T02:37:07.5444583Z             },
2026-06-22T02:37:07.5444688Z             {
2026-06-22T02:37:07.5444830Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5444945Z               "line": 1136
2026-06-22T02:37:07.5445045Z             },
2026-06-22T02:37:07.5445154Z             {
2026-06-22T02:37:07.5445284Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5445411Z               "line": 1149
2026-06-22T02:37:07.5445518Z             },
2026-06-22T02:37:07.5445627Z             {
2026-06-22T02:37:07.5445765Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5445866Z               "line": 1215
2026-06-22T02:37:07.5445974Z             },
2026-06-22T02:37:07.5446065Z             {
2026-06-22T02:37:07.5446214Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5446327Z               "line": 1256
2026-06-22T02:37:07.5446438Z             },
2026-06-22T02:37:07.5446543Z             {
2026-06-22T02:37:07.5446684Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5446813Z               "line": 1272
2026-06-22T02:37:07.5446919Z             },
2026-06-22T02:37:07.5447017Z             {
2026-06-22T02:37:07.5447152Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:37:07.5447266Z               "line": 491
2026-06-22T02:37:07.5447481Z             },
2026-06-22T02:37:07.5447586Z             {
2026-06-22T02:37:07.5447723Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:37:07.5447839Z               "line": 506
2026-06-22T02:37:07.5447943Z             },
2026-06-22T02:37:07.5448043Z             {
2026-06-22T02:37:07.5448172Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:37:07.5448290Z               "line": 524
2026-06-22T02:37:07.5448387Z             },
2026-06-22T02:37:07.5448492Z             {
2026-06-22T02:37:07.5448634Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:37:07.5448740Z               "line": 546
2026-06-22T02:37:07.5448929Z             },
2026-06-22T02:37:07.5449119Z             {
2026-06-22T02:37:07.5449260Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:37:07.5449380Z               "line": 556
2026-06-22T02:37:07.5449485Z             },
2026-06-22T02:37:07.5449589Z             {
2026-06-22T02:37:07.5449728Z               "path": "crates/spt/src/picker/view.rs",
2026-06-22T02:37:07.5449846Z               "line": 582
2026-06-22T02:37:07.5449951Z             }
2026-06-22T02:37:07.5450048Z           ]
2026-06-22T02:37:07.5450152Z         }
2026-06-22T02:37:07.5450256Z       }
2026-06-22T02:37:07.5450363Z     },
2026-06-22T02:37:07.5450467Z     {
2026-06-22T02:37:07.5450600Z       "id": "REQ-RUN-SHORTCUT",
2026-06-22T02:37:07.5455299Z       "title": "`<basename>-<id>` launcher shortcut generation (picker `s` keybind, M12-W2-T2.4): from any pre-start options set the picker writes/updates a `<basename>-<id>` launcher at the project root baking the current selection's non-interactive `spt endpoint run` flags (terminal actions only: adapter[:profile] + id + (create|resume) + (start|attach|view); Kick/Instantiate/Change-adapter/Fork are interactive-only, not bakeable). BASENAME IS A PARAMETER (operator rev. 2026-06-14): harness-agnostic spt-core defaults to `spt` (→ `spt-<id>`); an adapter/flow OVERRIDES it (spt-claude-code → `cc`), so spt-core NEVER bakes `cc` (a harness name) into itself. The basename must be a DISTINCT token, never bare `spt` (a `spt.cmd` would shadow the real `spt.exe` only under cmd.exe cwd-first search, silently no-op in PowerShell/Unix, and self-recurse). The script is the CURRENT OS's native form — `.cmd` on Windows (NOT `.ps1`: default PATHEXT excludes `.ps1` so a bare/ext-less name never resolves one; `.cmd` is PATHEXT-resolvable), POSIX `sh` (+chmod +x) on Unix (a single portable form can't be both). The generated header documents the invocation reality (cmd.exe bare `<name>` in the project dir / PowerShell `.\\<name>` / Unix `./<name>`; a truly-bare basename on PATH = a PATH-installed launcher, `/spt:setup`'s job). Overwrite is SENTINEL-guarded: the generator writes + checks a generated-by header marker — it overwrites its own prior output freely, but REFUSES + warns if a same-named file lacks the sentinel (never clobber a user file). Requires the additive `--create` flag on `Run{}` (the default-fresh made explicit; N-1-safe).",
2026-06-22T02:37:07.5455472Z       "requiredStages": [
2026-06-22T02:37:07.5455581Z         "doc",
2026-06-22T02:37:07.5455685Z         "impl",
2026-06-22T02:37:07.5455791Z         "unit"
2026-06-22T02:37:07.5455895Z       ],
2026-06-22T02:37:07.5456005Z       "stages": {
2026-06-22T02:37:07.5456116Z         "doc": {
2026-06-22T02:37:07.5456234Z           "complete": true,
2026-06-22T02:37:07.5456354Z           "evidence": [
2026-06-22T02:37:07.5456464Z             {
2026-06-22T02:37:07.5456578Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5456693Z               "line": 390
2026-06-22T02:37:07.5456797Z             }
2026-06-22T02:37:07.5456902Z           ]
2026-06-22T02:37:07.5457008Z         },
2026-06-22T02:37:07.5457117Z         "impl": {
2026-06-22T02:37:07.5457220Z           "complete": true,
2026-06-22T02:37:07.5457334Z           "evidence": [
2026-06-22T02:37:07.5457440Z             {
2026-06-22T02:37:07.5457592Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:37:07.5457808Z               "line": 39
2026-06-22T02:37:07.5457911Z             },
2026-06-22T02:37:07.5458017Z             {
2026-06-22T02:37:07.5458179Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:37:07.5458288Z               "line": 79
2026-06-22T02:37:07.5458403Z             },
2026-06-22T02:37:07.5458503Z             {
2026-06-22T02:37:07.5458651Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:37:07.5458756Z               "line": 162
2026-06-22T02:37:07.5458865Z             }
2026-06-22T02:37:07.5459052Z           ]
2026-06-22T02:37:07.5459156Z         },
2026-06-22T02:37:07.5459262Z         "int": {
2026-06-22T02:37:07.5459560Z           "complete": false,
2026-06-22T02:37:07.5459684Z           "evidence": []
2026-06-22T02:37:07.5459787Z         },
2026-06-22T02:37:07.5459887Z         "unit": {
2026-06-22T02:37:07.5460012Z           "complete": true,
2026-06-22T02:37:07.5460120Z           "evidence": [
2026-06-22T02:37:07.5460226Z             {
2026-06-22T02:37:07.5460374Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:37:07.5460492Z               "line": 206
2026-06-22T02:37:07.5460594Z             },
2026-06-22T02:37:07.5460703Z             {
2026-06-22T02:37:07.5460846Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:37:07.5460956Z               "line": 222
2026-06-22T02:37:07.5461065Z             },
2026-06-22T02:37:07.5461175Z             {
2026-06-22T02:37:07.5461322Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:37:07.5461432Z               "line": 238
2026-06-22T02:37:07.5461533Z             },
2026-06-22T02:37:07.5461641Z             {
2026-06-22T02:37:07.5461790Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:37:07.5461896Z               "line": 251
2026-06-22T02:37:07.5461999Z             },
2026-06-22T02:37:07.5462110Z             {
2026-06-22T02:37:07.5462257Z               "path": "crates/spt/src/picker/shortcut.rs",
2026-06-22T02:37:07.5462375Z               "line": 258
2026-06-22T02:37:07.5462485Z             }
2026-06-22T02:37:07.5462584Z           ]
2026-06-22T02:37:07.5462687Z         }
2026-06-22T02:37:07.5462788Z       }
2026-06-22T02:37:07.5462888Z     },
2026-06-22T02:37:07.5462978Z     {
2026-06-22T02:37:07.5463107Z       "id": "REQ-SEAM-ACTIVITY",
2026-06-22T02:37:07.5463321Z       "title": "Activity/idle reported via api sentinels, not PTY quiescence",
2026-06-22T02:37:07.5463432Z       "requiredStages": [
2026-06-22T02:37:07.5463536Z         "impl",
2026-06-22T02:37:07.5463641Z         "unit"
2026-06-22T02:37:07.5463742Z       ],
2026-06-22T02:37:07.5463851Z       "stages": {
2026-06-22T02:37:07.5463965Z         "doc": {
2026-06-22T02:37:07.5464081Z           "complete": false,
2026-06-22T02:37:07.5464189Z           "evidence": []
2026-06-22T02:37:07.5464294Z         },
2026-06-22T02:37:07.5464391Z         "impl": {
2026-06-22T02:37:07.5464513Z           "complete": true,
2026-06-22T02:37:07.5464624Z           "evidence": [
2026-06-22T02:37:07.5464739Z             {
2026-06-22T02:37:07.5464885Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5464999Z               "line": 18
2026-06-22T02:37:07.5465108Z             },
2026-06-22T02:37:07.5465211Z             {
2026-06-22T02:37:07.5465349Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5465455Z               "line": 35
2026-06-22T02:37:07.5465559Z             },
2026-06-22T02:37:07.5465664Z             {
2026-06-22T02:37:07.5465803Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5465921Z               "line": 72
2026-06-22T02:37:07.5466023Z             }
2026-06-22T02:37:07.5466136Z           ]
2026-06-22T02:37:07.5466245Z         },
2026-06-22T02:37:07.5466347Z         "int": {
2026-06-22T02:37:07.5466470Z           "complete": false,
2026-06-22T02:37:07.5466584Z           "evidence": []
2026-06-22T02:37:07.5466685Z         },
2026-06-22T02:37:07.5466794Z         "unit": {
2026-06-22T02:37:07.5467014Z           "complete": true,
2026-06-22T02:37:07.5467123Z           "evidence": [
2026-06-22T02:37:07.5467219Z             {
2026-06-22T02:37:07.5467353Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5467457Z               "line": 239
2026-06-22T02:37:07.5467563Z             },
2026-06-22T02:37:07.5467672Z             {
2026-06-22T02:37:07.5467804Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5467909Z               "line": 256
2026-06-22T02:37:07.5468015Z             },
2026-06-22T02:37:07.5468119Z             {
2026-06-22T02:37:07.5468258Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5468452Z               "line": 265
2026-06-22T02:37:07.5468554Z             }
2026-06-22T02:37:07.5468658Z           ]
2026-06-22T02:37:07.5468767Z         }
2026-06-22T02:37:07.5468873Z       }
2026-06-22T02:37:07.5469082Z     },
2026-06-22T02:37:07.5469188Z     {
2026-06-22T02:37:07.5469316Z       "id": "REQ-SEAM-CAPABILITY",
2026-06-22T02:37:07.5473309Z       "title": "Hostable endpoint-types capability declaration",
2026-06-22T02:37:07.5473478Z       "requiredStages": [
2026-06-22T02:37:07.5473595Z         "impl",
2026-06-22T02:37:07.5473706Z         "unit"
2026-06-22T02:37:07.5473802Z       ],
2026-06-22T02:37:07.5473910Z       "stages": {
2026-06-22T02:37:07.5474011Z         "doc": {
2026-06-22T02:37:07.5474121Z           "complete": false,
2026-06-22T02:37:07.5474244Z           "evidence": []
2026-06-22T02:37:07.5474350Z         },
2026-06-22T02:37:07.5474454Z         "impl": {
2026-06-22T02:37:07.5474578Z           "complete": true,
2026-06-22T02:37:07.5474689Z           "evidence": [
2026-06-22T02:37:07.5474816Z             {
2026-06-22T02:37:07.5474975Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5475087Z               "line": 598
2026-06-22T02:37:07.5475193Z             }
2026-06-22T02:37:07.5475299Z           ]
2026-06-22T02:37:07.5475412Z         },
2026-06-22T02:37:07.5475520Z         "int": {
2026-06-22T02:37:07.5475640Z           "complete": false,
2026-06-22T02:37:07.5475752Z           "evidence": []
2026-06-22T02:37:07.5475861Z         },
2026-06-22T02:37:07.5475967Z         "unit": {
2026-06-22T02:37:07.5476086Z           "complete": true,
2026-06-22T02:37:07.5476201Z           "evidence": [
2026-06-22T02:37:07.5476306Z             {
2026-06-22T02:37:07.5476472Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5476583Z               "line": 967
2026-06-22T02:37:07.5476683Z             }
2026-06-22T02:37:07.5476777Z           ]
2026-06-22T02:37:07.5476874Z         }
2026-06-22T02:37:07.5476982Z       }
2026-06-22T02:37:07.5477082Z     },
2026-06-22T02:37:07.5477188Z     {
2026-06-22T02:37:07.5477311Z       "id": "REQ-SEAM-HISTORY",
2026-06-22T02:37:07.5477537Z       "title": "History subsystem (fetcher / locate-normalize / native store)",
2026-06-22T02:37:07.5477654Z       "requiredStages": [
2026-06-22T02:37:07.5477769Z         "impl",
2026-06-22T02:37:07.5477880Z         "unit",
2026-06-22T02:37:07.5477988Z         "int"
2026-06-22T02:37:07.5478089Z       ],
2026-06-22T02:37:07.5478195Z       "stages": {
2026-06-22T02:37:07.5478307Z         "doc": {
2026-06-22T02:37:07.5478421Z           "complete": false,
2026-06-22T02:37:07.5478532Z           "evidence": []
2026-06-22T02:37:07.5478636Z         },
2026-06-22T02:37:07.5478741Z         "impl": {
2026-06-22T02:37:07.5478856Z           "complete": true,
2026-06-22T02:37:07.5479041Z           "evidence": [
2026-06-22T02:37:07.5479138Z             {
2026-06-22T02:37:07.5479280Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:37:07.5479390Z               "line": 24
2026-06-22T02:37:07.5479495Z             },
2026-06-22T02:37:07.5479595Z             {
2026-06-22T02:37:07.5479738Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:37:07.5479843Z               "line": 22
2026-06-22T02:37:07.5479952Z             }
2026-06-22T02:37:07.5480058Z           ]
2026-06-22T02:37:07.5480167Z         },
2026-06-22T02:37:07.5480416Z         "int": {
2026-06-22T02:37:07.5480529Z           "complete": true,
2026-06-22T02:37:07.5480638Z           "evidence": [
2026-06-22T02:37:07.5480747Z             {
2026-06-22T02:37:07.5480902Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.5481002Z               "line": 260
2026-06-22T02:37:07.5481113Z             }
2026-06-22T02:37:07.5481213Z           ]
2026-06-22T02:37:07.5481317Z         },
2026-06-22T02:37:07.5481428Z         "unit": {
2026-06-22T02:37:07.5481537Z           "complete": true,
2026-06-22T02:37:07.5481651Z           "evidence": [
2026-06-22T02:37:07.5481757Z             {
2026-06-22T02:37:07.5481996Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:37:07.5482100Z               "line": 171
2026-06-22T02:37:07.5482204Z             },
2026-06-22T02:37:07.5482310Z             {
2026-06-22T02:37:07.5482443Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:37:07.5482552Z               "line": 200
2026-06-22T02:37:07.5482644Z             },
2026-06-22T02:37:07.5482738Z             {
2026-06-22T02:37:07.5482876Z               "path": "crates/spt-live/src/echo.rs",
2026-06-22T02:37:07.5482978Z               "line": 220
2026-06-22T02:37:07.5483091Z             },
2026-06-22T02:37:07.5483191Z             {
2026-06-22T02:37:07.5483326Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:37:07.5483434Z               "line": 199
2026-06-22T02:37:07.5483538Z             },
2026-06-22T02:37:07.5483648Z             {
2026-06-22T02:37:07.5483788Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:37:07.5483903Z               "line": 219
2026-06-22T02:37:07.5484008Z             },
2026-06-22T02:37:07.5484112Z             {
2026-06-22T02:37:07.5484252Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:37:07.5484362Z               "line": 244
2026-06-22T02:37:07.5484470Z             },
2026-06-22T02:37:07.5484581Z             {
2026-06-22T02:37:07.5484738Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:37:07.5484847Z               "line": 276
2026-06-22T02:37:07.5484953Z             },
2026-06-22T02:37:07.5485062Z             {
2026-06-22T02:37:07.5485191Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:37:07.5485300Z               "line": 297
2026-06-22T02:37:07.5485400Z             },
2026-06-22T02:37:07.5485506Z             {
2026-06-22T02:37:07.5485638Z               "path": "crates/spt-live/src/history.rs",
2026-06-22T02:37:07.5485744Z               "line": 324
2026-06-22T02:37:07.5485845Z             }
2026-06-22T02:37:07.5485949Z           ]
2026-06-22T02:37:07.5486053Z         }
2026-06-22T02:37:07.5486162Z       }
2026-06-22T02:37:07.5486266Z     },
2026-06-22T02:37:07.5486369Z     {
2026-06-22T02:37:07.5486494Z       "id": "REQ-SEAM-INJECT",
2026-06-22T02:37:07.5486689Z       "title": "inject-input methods configurable per activity-state",
2026-06-22T02:37:07.5486814Z       "requiredStages": [
2026-06-22T02:37:07.5486919Z         "impl",
2026-06-22T02:37:07.5487023Z         "unit"
2026-06-22T02:37:07.5487129Z       ],
2026-06-22T02:37:07.5487238Z       "stages": {
2026-06-22T02:37:07.5487400Z         "doc": {
2026-06-22T02:37:07.5487524Z           "complete": false,
2026-06-22T02:37:07.5487633Z           "evidence": []
2026-06-22T02:37:07.5487739Z         },
2026-06-22T02:37:07.5487848Z         "impl": {
2026-06-22T02:37:07.5487967Z           "complete": true,
2026-06-22T02:37:07.5488078Z           "evidence": [
2026-06-22T02:37:07.5488186Z             {
2026-06-22T02:37:07.5488330Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5488436Z               "line": 19
2026-06-22T02:37:07.5488543Z             },
2026-06-22T02:37:07.5488649Z             {
2026-06-22T02:37:07.5488788Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5488896Z               "line": 111
2026-06-22T02:37:07.5489087Z             }
2026-06-22T02:37:07.5489196Z           ]
2026-06-22T02:37:07.5489454Z         },
2026-06-22T02:37:07.5489558Z         "int": {
2026-06-22T02:37:07.5489664Z           "complete": false,
2026-06-22T02:37:07.5489774Z           "evidence": []
2026-06-22T02:37:07.5489873Z         },
2026-06-22T02:37:07.5489983Z         "unit": {
2026-06-22T02:37:07.5490093Z           "complete": true,
2026-06-22T02:37:07.5490197Z           "evidence": [
2026-06-22T02:37:07.5490303Z             {
2026-06-22T02:37:07.5490436Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5490555Z               "line": 345
2026-06-22T02:37:07.5490652Z             },
2026-06-22T02:37:07.5490760Z             {
2026-06-22T02:37:07.5491000Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5491108Z               "line": 365
2026-06-22T02:37:07.5491207Z             }
2026-06-22T02:37:07.5491312Z           ]
2026-06-22T02:37:07.5491411Z         }
2026-06-22T02:37:07.5491514Z       }
2026-06-22T02:37:07.5491620Z     },
2026-06-22T02:37:07.5491730Z     {
2026-06-22T02:37:07.5491863Z       "id": "REQ-SEAM-POSTSPAWN",
2026-06-22T02:37:07.5492021Z       "title": "post-spawn / api bind seam with boot nonce",
2026-06-22T02:37:07.5492130Z       "requiredStages": [
2026-06-22T02:37:07.5492236Z         "impl",
2026-06-22T02:37:07.5492345Z         "unit"
2026-06-22T02:37:07.5492449Z       ],
2026-06-22T02:37:07.5492556Z       "stages": {
2026-06-22T02:37:07.5492655Z         "doc": {
2026-06-22T02:37:07.5492769Z           "complete": false,
2026-06-22T02:37:07.5492880Z           "evidence": []
2026-06-22T02:37:07.5492989Z         },
2026-06-22T02:37:07.5493093Z         "impl": {
2026-06-22T02:37:07.5493204Z           "complete": true,
2026-06-22T02:37:07.5493327Z           "evidence": [
2026-06-22T02:37:07.5493418Z             {
2026-06-22T02:37:07.5493566Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5493675Z               "line": 18
2026-06-22T02:37:07.5493786Z             },
2026-06-22T02:37:07.5493881Z             {
2026-06-22T02:37:07.5494036Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5494146Z               "line": 431
2026-06-22T02:37:07.5494245Z             }
2026-06-22T02:37:07.5494353Z           ]
2026-06-22T02:37:07.5494454Z         },
2026-06-22T02:37:07.5494564Z         "int": {
2026-06-22T02:37:07.5494673Z           "complete": false,
2026-06-22T02:37:07.5494788Z           "evidence": []
2026-06-22T02:37:07.5494893Z         },
2026-06-22T02:37:07.5494997Z         "unit": {
2026-06-22T02:37:07.5495108Z           "complete": true,
2026-06-22T02:37:07.5495212Z           "evidence": [
2026-06-22T02:37:07.5495317Z             {
2026-06-22T02:37:07.5495451Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5495569Z               "line": 881
2026-06-22T02:37:07.5495679Z             },
2026-06-22T02:37:07.5495785Z             {
2026-06-22T02:37:07.5495922Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5496028Z               "line": 891
2026-06-22T02:37:07.5496138Z             }
2026-06-22T02:37:07.5496241Z           ]
2026-06-22T02:37:07.5496347Z         }
2026-06-22T02:37:07.5496448Z       }
2026-06-22T02:37:07.5496546Z     },
2026-06-22T02:37:07.5496651Z     {
2026-06-22T02:37:07.5496770Z       "id": "REQ-SEAM-PSYCHE",
2026-06-22T02:37:07.5496944Z       "title": "spawn-psyche seam (fresh + resume templates)",
2026-06-22T02:37:07.5497059Z       "requiredStages": [
2026-06-22T02:37:07.5497169Z         "impl",
2026-06-22T02:37:07.5497278Z         "unit",
2026-06-22T02:37:07.5497384Z         "int"
2026-06-22T02:37:07.5497493Z       ],
2026-06-22T02:37:07.5497597Z       "stages": {
2026-06-22T02:37:07.5497708Z         "doc": {
2026-06-22T02:37:07.5497822Z           "complete": false,
2026-06-22T02:37:07.5497931Z           "evidence": []
2026-06-22T02:37:07.5498037Z         },
2026-06-22T02:37:07.5498141Z         "impl": {
2026-06-22T02:37:07.5498251Z           "complete": true,
2026-06-22T02:37:07.5498362Z           "evidence": [
2026-06-22T02:37:07.5498461Z             {
2026-06-22T02:37:07.5498681Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:37:07.5498794Z               "line": 19
2026-06-22T02:37:07.5498899Z             },
2026-06-22T02:37:07.5499103Z             {
2026-06-22T02:37:07.5499234Z               "path": "crates/spt/src/api/live.rs",
2026-06-22T02:37:07.5499339Z               "line": 12
2026-06-22T02:37:07.5499456Z             },
2026-06-22T02:37:07.5499561Z             {
2026-06-22T02:37:07.5499701Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5499799Z               "line": 301
2026-06-22T02:37:07.5499904Z             }
2026-06-22T02:37:07.5500009Z           ]
2026-06-22T02:37:07.5500215Z         },
2026-06-22T02:37:07.5500314Z         "int": {
2026-06-22T02:37:07.5500428Z           "complete": true,
2026-06-22T02:37:07.5500539Z           "evidence": [
2026-06-22T02:37:07.5500648Z             {
2026-06-22T02:37:07.5500786Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.5500892Z               "line": 259
2026-06-22T02:37:07.5500996Z             }
2026-06-22T02:37:07.5501101Z           ]
2026-06-22T02:37:07.5501202Z         },
2026-06-22T02:37:07.5501315Z         "unit": {
2026-06-22T02:37:07.5501420Z           "complete": true,
2026-06-22T02:37:07.5501527Z           "evidence": [
2026-06-22T02:37:07.5501639Z             {
2026-06-22T02:37:07.5501767Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:37:07.5501877Z               "line": 195
2026-06-22T02:37:07.5501985Z             },
2026-06-22T02:37:07.5502089Z             {
2026-06-22T02:37:07.5502229Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:37:07.5502333Z               "line": 202
2026-06-22T02:37:07.5502438Z             },
2026-06-22T02:37:07.5502543Z             {
2026-06-22T02:37:07.5502676Z               "path": "crates/spt-live/src/psyche.rs",
2026-06-22T02:37:07.5502781Z               "line": 225
2026-06-22T02:37:07.5502891Z             },
2026-06-22T02:37:07.5503005Z             {
2026-06-22T02:37:07.5503135Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:37:07.5503244Z               "line": 106
2026-06-22T02:37:07.5503343Z             },
2026-06-22T02:37:07.5503445Z             {
2026-06-22T02:37:07.5503577Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:37:07.5503686Z               "line": 137
2026-06-22T02:37:07.5503783Z             },
2026-06-22T02:37:07.5503887Z             {
2026-06-22T02:37:07.5504021Z               "path": "crates/spt-live/src/pulse.rs",
2026-06-22T02:37:07.5504126Z               "line": 161
2026-06-22T02:37:07.5504235Z             }
2026-06-22T02:37:07.5504341Z           ]
2026-06-22T02:37:07.5504451Z         }
2026-06-22T02:37:07.5504550Z       }
2026-06-22T02:37:07.5504644Z     },
2026-06-22T02:37:07.5504758Z     {
2026-06-22T02:37:07.5504876Z       "id": "REQ-SEAM-RESUME",
2026-06-22T02:37:07.5505076Z       "title": "resume-session seam (fresh-with-preload / continue-existing)",
2026-06-22T02:37:07.5505200Z       "requiredStages": [
2026-06-22T02:37:07.5505300Z         "impl",
2026-06-22T02:37:07.5505401Z         "unit"
2026-06-22T02:37:07.5505505Z       ],
2026-06-22T02:37:07.5505619Z       "stages": {
2026-06-22T02:37:07.5505720Z         "doc": {
2026-06-22T02:37:07.5505834Z           "complete": false,
2026-06-22T02:37:07.5505944Z           "evidence": []
2026-06-22T02:37:07.5506049Z         },
2026-06-22T02:37:07.5506159Z         "impl": {
2026-06-22T02:37:07.5506278Z           "complete": true,
2026-06-22T02:37:07.5506388Z           "evidence": [
2026-06-22T02:37:07.5506492Z             {
2026-06-22T02:37:07.5506637Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:37:07.5506750Z               "line": 19
2026-06-22T02:37:07.5506859Z             }
2026-06-22T02:37:07.5506965Z           ]
2026-06-22T02:37:07.5507069Z         },
2026-06-22T02:37:07.5507173Z         "int": {
2026-06-22T02:37:07.5507283Z           "complete": false,
2026-06-22T02:37:07.5507386Z           "evidence": []
2026-06-22T02:37:07.5507586Z         },
2026-06-22T02:37:07.5507701Z         "unit": {
2026-06-22T02:37:07.5507818Z           "complete": true,
2026-06-22T02:37:07.5507924Z           "evidence": [
2026-06-22T02:37:07.5508039Z             {
2026-06-22T02:37:07.5508177Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:37:07.5508282Z               "line": 201
2026-06-22T02:37:07.5508382Z             },
2026-06-22T02:37:07.5508491Z             {
2026-06-22T02:37:07.5508635Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:37:07.5508744Z               "line": 223
2026-06-22T02:37:07.5508849Z             },
2026-06-22T02:37:07.5509101Z             {
2026-06-22T02:37:07.5509246Z               "path": "crates/spt-live/src/resume.rs",
2026-06-22T02:37:07.5509339Z               "line": 244
2026-06-22T02:37:07.5509450Z             }
2026-06-22T02:37:07.5509561Z           ]
2026-06-22T02:37:07.5509659Z         }
2026-06-22T02:37:07.5509770Z       }
2026-06-22T02:37:07.5509871Z     },
2026-06-22T02:37:07.5509978Z     {
2026-06-22T02:37:07.5510097Z       "id": "REQ-SEAM-SPAWN",
2026-06-22T02:37:07.5510217Z       "title": "spawn-session seam",
2026-06-22T02:37:07.5510340Z       "requiredStages": [
2026-06-22T02:37:07.5510440Z         "impl",
2026-06-22T02:37:07.5510541Z         "unit"
2026-06-22T02:37:07.5510641Z       ],
2026-06-22T02:37:07.5510745Z       "stages": {
2026-06-22T02:37:07.5510842Z         "doc": {
2026-06-22T02:37:07.5510965Z           "complete": false,
2026-06-22T02:37:07.5511089Z           "evidence": []
2026-06-22T02:37:07.5511185Z         },
2026-06-22T02:37:07.5511299Z         "impl": {
2026-06-22T02:37:07.5511419Z           "complete": true,
2026-06-22T02:37:07.5511537Z           "evidence": [
2026-06-22T02:37:07.5511647Z             {
2026-06-22T02:37:07.5511801Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.5511913Z               "line": 20
2026-06-22T02:37:07.5512009Z             }
2026-06-22T02:37:07.5512116Z           ]
2026-06-22T02:37:07.5512223Z         },
2026-06-22T02:37:07.5512332Z         "int": {
2026-06-22T02:37:07.5512438Z           "complete": false,
2026-06-22T02:37:07.5512545Z           "evidence": []
2026-06-22T02:37:07.5512649Z         },
2026-06-22T02:37:07.5512750Z         "unit": {
2026-06-22T02:37:07.5512864Z           "complete": true,
2026-06-22T02:37:07.5512968Z           "evidence": [
2026-06-22T02:37:07.5513075Z             {
2026-06-22T02:37:07.5513221Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.5513322Z               "line": 608
2026-06-22T02:37:07.5513423Z             },
2026-06-22T02:37:07.5513517Z             {
2026-06-22T02:37:07.5513676Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.5513790Z               "line": 615
2026-06-22T02:37:07.5513894Z             },
2026-06-22T02:37:07.5513990Z             {
2026-06-22T02:37:07.5514128Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.5514242Z               "line": 721
2026-06-22T02:37:07.5514349Z             },
2026-06-22T02:37:07.5514461Z             {
2026-06-22T02:37:07.5514591Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.5514705Z               "line": 727
2026-06-22T02:37:07.5514809Z             },
2026-06-22T02:37:07.5514911Z             {
2026-06-22T02:37:07.5515058Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.5515161Z               "line": 752
2026-06-22T02:37:07.5515271Z             },
2026-06-22T02:37:07.5515379Z             {
2026-06-22T02:37:07.5515530Z               "path": "crates/spt-runtime/src/runtime.rs",
2026-06-22T02:37:07.5515641Z               "line": 789
2026-06-22T02:37:07.5515755Z             }
2026-06-22T02:37:07.5515865Z           ]
2026-06-22T02:37:07.5515961Z         }
2026-06-22T02:37:07.5516070Z       }
2026-06-22T02:37:07.5516169Z     },
2026-06-22T02:37:07.5516271Z     {
2026-06-22T02:37:07.5516394Z       "id": "REQ-SEAM-UPDATE",
2026-06-22T02:37:07.5516595Z       "title": "Adapter-update avenue (file-pull / delegated command)",
2026-06-22T02:37:07.5516833Z       "requiredStages": [
2026-06-22T02:37:07.5516938Z         "impl",
2026-06-22T02:37:07.5517052Z         "unit"
2026-06-22T02:37:07.5517153Z       ],
2026-06-22T02:37:07.5517268Z       "stages": {
2026-06-22T02:37:07.5517371Z         "doc": {
2026-06-22T02:37:07.5517492Z           "complete": false,
2026-06-22T02:37:07.5517601Z           "evidence": []
2026-06-22T02:37:07.5517709Z         },
2026-06-22T02:37:07.5517823Z         "impl": {
2026-06-22T02:37:07.5517928Z           "complete": true,
2026-06-22T02:37:07.5518035Z           "evidence": [
2026-06-22T02:37:07.5518242Z             {
2026-06-22T02:37:07.5518412Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5518518Z               "line": 28
2026-06-22T02:37:07.5518618Z             },
2026-06-22T02:37:07.5518727Z             {
2026-06-22T02:37:07.5518880Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5519071Z               "line": 88
2026-06-22T02:37:07.5519171Z             }
2026-06-22T02:37:07.5519281Z           ]
2026-06-22T02:37:07.5519385Z         },
2026-06-22T02:37:07.5519491Z         "int": {
2026-06-22T02:37:07.5519615Z           "complete": false,
2026-06-22T02:37:07.5519724Z           "evidence": []
2026-06-22T02:37:07.5519829Z         },
2026-06-22T02:37:07.5519934Z         "unit": {
2026-06-22T02:37:07.5520054Z           "complete": true,
2026-06-22T02:37:07.5520158Z           "evidence": [
2026-06-22T02:37:07.5520263Z             {
2026-06-22T02:37:07.5520421Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5520539Z               "line": 326
2026-06-22T02:37:07.5520638Z             },
2026-06-22T02:37:07.5520738Z             {
2026-06-22T02:37:07.5520896Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5521010Z               "line": 337
2026-06-22T02:37:07.5521106Z             }
2026-06-22T02:37:07.5521211Z           ]
2026-06-22T02:37:07.5521315Z         }
2026-06-22T02:37:07.5521421Z       }
2026-06-22T02:37:07.5521512Z     },
2026-06-22T02:37:07.5521620Z     {
2026-06-22T02:37:07.5521740Z       "id": "REQ-SEC-1",
2026-06-22T02:37:07.5522155Z       "title": "Per-endpoint access whitelist: origin-node gate, stateful-firewall (reply/outbound exempt), node-now/user-later, outer gate before grants",
2026-06-22T02:37:07.5522279Z       "requiredStages": [
2026-06-22T02:37:07.5522380Z         "impl",
2026-06-22T02:37:07.5522488Z         "unit"
2026-06-22T02:37:07.5522598Z       ],
2026-06-22T02:37:07.5522709Z       "stages": {
2026-06-22T02:37:07.5522816Z         "doc": {
2026-06-22T02:37:07.5522931Z           "complete": false,
2026-06-22T02:37:07.5523045Z           "evidence": []
2026-06-22T02:37:07.5523148Z         },
2026-06-22T02:37:07.5523258Z         "impl": {
2026-06-22T02:37:07.5523368Z           "complete": true,
2026-06-22T02:37:07.5523476Z           "evidence": [
2026-06-22T02:37:07.5523582Z             {
2026-06-22T02:37:07.5523735Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:37:07.5523844Z               "line": 86
2026-06-22T02:37:07.5523940Z             },
2026-06-22T02:37:07.5524040Z             {
2026-06-22T02:37:07.5524187Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:37:07.5524298Z               "line": 116
2026-06-22T02:37:07.5524406Z             },
2026-06-22T02:37:07.5524511Z             {
2026-06-22T02:37:07.5524645Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:37:07.5524754Z               "line": 130
2026-06-22T02:37:07.5524865Z             },
2026-06-22T02:37:07.5524974Z             {
2026-06-22T02:37:07.5525117Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5525219Z               "line": 109
2026-06-22T02:37:07.5525321Z             },
2026-06-22T02:37:07.5525427Z             {
2026-06-22T02:37:07.5525562Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5525788Z               "line": 130
2026-06-22T02:37:07.5525898Z             },
2026-06-22T02:37:07.5526005Z             {
2026-06-22T02:37:07.5526143Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5526259Z               "line": 143
2026-06-22T02:37:07.5526363Z             },
2026-06-22T02:37:07.5526458Z             {
2026-06-22T02:37:07.5526611Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5526720Z               "line": 209
2026-06-22T02:37:07.5526817Z             },
2026-06-22T02:37:07.5526922Z             {
2026-06-22T02:37:07.5527059Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5527355Z               "line": 235
2026-06-22T02:37:07.5527461Z             },
2026-06-22T02:37:07.5527569Z             {
2026-06-22T02:37:07.5527693Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5527808Z               "line": 5295
2026-06-22T02:37:07.5527912Z             }
2026-06-22T02:37:07.5528008Z           ]
2026-06-22T02:37:07.5528110Z         },
2026-06-22T02:37:07.5528203Z         "int": {
2026-06-22T02:37:07.5528321Z           "complete": false,
2026-06-22T02:37:07.5528441Z           "evidence": []
2026-06-22T02:37:07.5528534Z         },
2026-06-22T02:37:07.5528648Z         "unit": {
2026-06-22T02:37:07.5528763Z           "complete": true,
2026-06-22T02:37:07.5528877Z           "evidence": [
2026-06-22T02:37:07.5529050Z             {
2026-06-22T02:37:07.5529197Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:37:07.5529306Z               "line": 142
2026-06-22T02:37:07.5529407Z             },
2026-06-22T02:37:07.5529507Z             {
2026-06-22T02:37:07.5529655Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:37:07.5529765Z               "line": 194
2026-06-22T02:37:07.5529869Z             },
2026-06-22T02:37:07.5529979Z             {
2026-06-22T02:37:07.5530112Z               "path": "crates/spt-daemon/src/access.rs",
2026-06-22T02:37:07.5530226Z               "line": 235
2026-06-22T02:37:07.5530342Z             },
2026-06-22T02:37:07.5530446Z             {
2026-06-22T02:37:07.5530590Z               "path": "crates/spt-daemon/tests/access.rs",
2026-06-22T02:37:07.5530695Z               "line": 140
2026-06-22T02:37:07.5530803Z             },
2026-06-22T02:37:07.5530905Z             {
2026-06-22T02:37:07.5531043Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5531160Z               "line": 247
2026-06-22T02:37:07.5531260Z             },
2026-06-22T02:37:07.5531371Z             {
2026-06-22T02:37:07.5531517Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5531623Z               "line": 277
2026-06-22T02:37:07.5531733Z             },
2026-06-22T02:37:07.5531837Z             {
2026-06-22T02:37:07.5531977Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5532086Z               "line": 310
2026-06-22T02:37:07.5532195Z             },
2026-06-22T02:37:07.5532300Z             {
2026-06-22T02:37:07.5532433Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5532544Z               "line": 329
2026-06-22T02:37:07.5532649Z             },
2026-06-22T02:37:07.5532753Z             {
2026-06-22T02:37:07.5532887Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5533001Z               "line": 362
2026-06-22T02:37:07.5533110Z             },
2026-06-22T02:37:07.5533212Z             {
2026-06-22T02:37:07.5533353Z               "path": "crates/spt-store/src/access.rs",
2026-06-22T02:37:07.5533466Z               "line": 386
2026-06-22T02:37:07.5533567Z             },
2026-06-22T02:37:07.5533670Z             {
2026-06-22T02:37:07.5533808Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5533928Z               "line": 8296
2026-06-22T02:37:07.5534027Z             }
2026-06-22T02:37:07.5534127Z           ]
2026-06-22T02:37:07.5534224Z         }
2026-06-22T02:37:07.5534328Z       }
2026-06-22T02:37:07.5534432Z     },
2026-06-22T02:37:07.5534538Z     {
2026-06-22T02:37:07.5534767Z       "id": "REQ-SEND-SPT-HOSTED",
2026-06-22T02:37:07.5538468Z       "title": "An inbound `spt send` is DELIVERED to an spt-hosted endpoint (brought up via `spt endpoint run` → `api bind`, broker holds its PTY, NO `api listen` relay). Today cmd_bind→establish_perch (api/startup.rs ~441) writes info.json + ready marker + controllable=Some(true) but registers NO message-listener / NO address, so deliver.rs resolve_address→None→spool (deliver.rs:132-140) and the message NEVER reaches the live PTY — the endpoint reads 'online' (ready marker) yet `spt send` silently SPOOLS ('online but not deliverable' lie). Per CONTEXT:187-188 the daemon owns the PTY and delivers, manifest-configurable per activity-state (direct PTY injection / relay / HTTP). FIX: route an inbound send for an spt-hosted target through the daemon → broker InputReq → session.write_input PTY-inject (broker.rs dispatch_input/write_input ~988-1022), the same path the brain uses; the live-delivery handshake must report Sent (not Queued) and stop the spool-only fallback for a broker-hosted, PTY-resident endpoint. Detection is local: controllable==Some(true) + spt-hosted state + resolve_address==None. = the spt-core HALF of the wall-b finding (perri owns the adapter half: bind-hook fired-zero-perch + the missing endpoint-run int test). (post-v0.10.0)",
2026-06-22T02:37:07.5538740Z       "requiredStages": [
2026-06-22T02:37:07.5538844Z         "impl",
2026-06-22T02:37:07.5539029Z         "unit",
2026-06-22T02:37:07.5539128Z         "int"
2026-06-22T02:37:07.5539227Z       ],
2026-06-22T02:37:07.5539333Z       "stages": {
2026-06-22T02:37:07.5539457Z         "doc": {
2026-06-22T02:37:07.5539580Z           "complete": false,
2026-06-22T02:37:07.5539705Z           "evidence": []
2026-06-22T02:37:07.5539804Z         },
2026-06-22T02:37:07.5539915Z         "impl": {
2026-06-22T02:37:07.5540029Z           "complete": true,
2026-06-22T02:37:07.5540138Z           "evidence": [
2026-06-22T02:37:07.5540249Z             {
2026-06-22T02:37:07.5540406Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.5540525Z               "line": 1160
2026-06-22T02:37:07.5540625Z             },
2026-06-22T02:37:07.5540730Z             {
2026-06-22T02:37:07.5540874Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.5540977Z               "line": 1775
2026-06-22T02:37:07.5541087Z             },
2026-06-22T02:37:07.5541189Z             {
2026-06-22T02:37:07.5541320Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5541426Z               "line": 2850
2026-06-22T02:37:07.5541537Z             }
2026-06-22T02:37:07.5541640Z           ]
2026-06-22T02:37:07.5541744Z         },
2026-06-22T02:37:07.5541850Z         "int": {
2026-06-22T02:37:07.5541960Z           "complete": true,
2026-06-22T02:37:07.5542073Z           "evidence": [
2026-06-22T02:37:07.5542174Z             {
2026-06-22T02:37:07.5542326Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.5542436Z               "line": 189
2026-06-22T02:37:07.5542546Z             },
2026-06-22T02:37:07.5542655Z             {
2026-06-22T02:37:07.5542804Z               "path": "crates/spt-daemon/tests/broker.rs",
2026-06-22T02:37:07.5542922Z               "line": 524
2026-06-22T02:37:07.5543022Z             }
2026-06-22T02:37:07.5543128Z           ]
2026-06-22T02:37:07.5543227Z         },
2026-06-22T02:37:07.5543323Z         "unit": {
2026-06-22T02:37:07.5543443Z           "complete": true,
2026-06-22T02:37:07.5543552Z           "evidence": [
2026-06-22T02:37:07.5543661Z             {
2026-06-22T02:37:07.5543796Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.5543918Z               "line": 980
2026-06-22T02:37:07.5544017Z             },
2026-06-22T02:37:07.5544127Z             {
2026-06-22T02:37:07.5544268Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5544368Z               "line": 7486
2026-06-22T02:37:07.5544478Z             }
2026-06-22T02:37:07.5544582Z           ]
2026-06-22T02:37:07.5544793Z         }
2026-06-22T02:37:07.5544893Z       }
2026-06-22T02:37:07.5544992Z     },
2026-06-22T02:37:07.5545094Z     {
2026-06-22T02:37:07.5545226Z       "id": "REQ-SESSION-RESUME-TEMPLATE",
2026-06-22T02:37:07.5552078Z       "title": "Resuming an endpoint session that HAS conversation history brings up a BLANK session. ROOT (doyle, code-grounded + CONTEXT — case-3 spt-core MISSING feature, NOT a perri docs-miss): CONTEXT L127-129 already defines the resume-session seam ('continue-existing: resume an existing harness session under the adapter — its NATIVE resume'), and the manifest already has the resume-variant pattern (Session has BOTH psyche_init AND psyche_resume, manifest.rs:217-219) — but the agent's own session has ONLY self_ (`[session.self]`, no resume sibling). cmd_endpoint_run (cli.rs:1304) re-passes the session_id through `[session.self]` on resume (resume.unwrap_or_else(mint_session_id)), so the adapter's FRESH command (e.g. `claude --session-id ..`) runs again instead of the harness NATIVE resume (`claude -r ..`) -> CC starts a fresh transcript -> blank. spt-core forwards session_id + cwd faithfully; it just has no way to express the native-resume invocation. SECOND GAP: CC resolves a transcript by session_id + cwd, but the session ledger records only {ts, session_id, trigger} (no cwd), so picker Resume-from-history (cross-project rows) can't restore the right cwd. FIX (doyle design, V0.13.0-P2-SESSION-RESUME-DESIGN.md, mirrors psyche_init->psyche_resume exactly): (A) add a `[session.resume]` role (resume: Option<SessionRole> on Session + roles()/is_empty()); cmd_endpoint_run selects it when --resume is set AND it's declared (fill {id}/{session_id}=resumed id/{session_name} + the resume cwd), else FALL BACK to `[session.self]` (full back-compat). (B) record cwd PER ledger row (operator ruling): {ts, session_id, trigger, cwd} additive serde-default; resume cwd = resumed row cwd -> else perch info.cwd -> else current_dir (back-compat for old rows + single-project endpoints); picker threads the selected row's cwd through Outcome::Run -> cmd_endpoint_run. (C) public docs (MANIFEST + harness-contract) teach `[session.resume]` so perri builds the adapter side BLIND. Adapter follow-on (perri, AFTER spt-core ships+docs): declare `[session.resume] command = claude -r {session_id} --remote-control {id} --dangerously-skip-permissions` from the resume cwd. Completes REQ-READY-AGENT-RESUME / REQ-RUN-PICKER resume-from-history. (v0.13.0)",
2026-06-22T02:37:07.5552390Z       "requiredStages": [
2026-06-22T02:37:07.5552496Z         "doc",
2026-06-22T02:37:07.5552605Z         "impl",
2026-06-22T02:37:07.5552710Z         "unit",
2026-06-22T02:37:07.5552815Z         "int"
2026-06-22T02:37:07.5552929Z       ],
2026-06-22T02:37:07.5553025Z       "stages": {
2026-06-22T02:37:07.5553130Z         "doc": {
2026-06-22T02:37:07.5553248Z           "complete": true,
2026-06-22T02:37:07.5553354Z           "evidence": [
2026-06-22T02:37:07.5553459Z             {
2026-06-22T02:37:07.5553625Z               "path": "docs-site/src/harness-contract/manifest.md",
2026-06-22T02:37:07.5553745Z               "line": 130
2026-06-22T02:37:07.5553854Z             },
2026-06-22T02:37:07.5553945Z             {
2026-06-22T02:37:07.5554079Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.5554178Z               "line": 96
2026-06-22T02:37:07.5554284Z             }
2026-06-22T02:37:07.5554389Z           ]
2026-06-22T02:37:07.5554497Z         },
2026-06-22T02:37:07.5554606Z         "impl": {
2026-06-22T02:37:07.5554720Z           "complete": true,
2026-06-22T02:37:07.5554823Z           "evidence": [
2026-06-22T02:37:07.5554928Z             {
2026-06-22T02:37:07.5555087Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.5555200Z               "line": 77
2026-06-22T02:37:07.5555305Z             },
2026-06-22T02:37:07.5555415Z             {
2026-06-22T02:37:07.5555572Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.5555682Z               "line": 183
2026-06-22T02:37:07.5555887Z             },
2026-06-22T02:37:07.5555997Z             {
2026-06-22T02:37:07.5556148Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5556264Z               "line": 222
2026-06-22T02:37:07.5556373Z             },
2026-06-22T02:37:07.5556482Z             {
2026-06-22T02:37:07.5556636Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5556750Z               "line": 71
2026-06-22T02:37:07.5556856Z             },
2026-06-22T02:37:07.5556960Z             {
2026-06-22T02:37:07.5557112Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5557228Z               "line": 176
2026-06-22T02:37:07.5557430Z             }
2026-06-22T02:37:07.5557540Z           ]
2026-06-22T02:37:07.5557644Z         },
2026-06-22T02:37:07.5557757Z         "int": {
2026-06-22T02:37:07.5557872Z           "complete": true,
2026-06-22T02:37:07.5557987Z           "evidence": [
2026-06-22T02:37:07.5558100Z             {
2026-06-22T02:37:07.5558258Z               "path": "crates/spt/tests/resume_template_e2e.rs",
2026-06-22T02:37:07.5558381Z               "line": 25
2026-06-22T02:37:07.5558483Z             }
2026-06-22T02:37:07.5558597Z           ]
2026-06-22T02:37:07.5558701Z         },
2026-06-22T02:37:07.5558812Z         "unit": {
2026-06-22T02:37:07.5558935Z           "complete": true,
2026-06-22T02:37:07.5559151Z           "evidence": [
2026-06-22T02:37:07.5559259Z             {
2026-06-22T02:37:07.5559413Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.5559527Z               "line": 341
2026-06-22T02:37:07.5559631Z             },
2026-06-22T02:37:07.5559733Z             {
2026-06-22T02:37:07.5559893Z               "path": "crates/spt-daemon/src/harnesshost.rs",
2026-06-22T02:37:07.5560002Z               "line": 391
2026-06-22T02:37:07.5563299Z             },
2026-06-22T02:37:07.5563437Z             {
2026-06-22T02:37:07.5563614Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5563733Z               "line": 1244
2026-06-22T02:37:07.5563846Z             },
2026-06-22T02:37:07.5563957Z             {
2026-06-22T02:37:07.5564109Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5564224Z               "line": 184
2026-06-22T02:37:07.5564319Z             },
2026-06-22T02:37:07.5564428Z             {
2026-06-22T02:37:07.5564578Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5564686Z               "line": 208
2026-06-22T02:37:07.5564791Z             },
2026-06-22T02:37:07.5564893Z             {
2026-06-22T02:37:07.5565039Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5565142Z               "line": 236
2026-06-22T02:37:07.5565252Z             },
2026-06-22T02:37:07.5565350Z             {
2026-06-22T02:37:07.5565488Z               "path": "crates/spt/src/picker/model.rs",
2026-06-22T02:37:07.5565599Z               "line": 945
2026-06-22T02:37:07.5565694Z             }
2026-06-22T02:37:07.5565798Z           ]
2026-06-22T02:37:07.5565914Z         }
2026-06-22T02:37:07.5566013Z       }
2026-06-22T02:37:07.5566113Z     },
2026-06-22T02:37:07.5566214Z     {
2026-06-22T02:37:07.5566337Z       "id": "REQ-SHELL-1",
2026-06-22T02:37:07.5567267Z       "title": "Shell hosting machinery: shell perch under the owner (type/owner/adapter_name/status/alias), broker-launched binary + api bind local-link handshake, the three channels (command durable, text+file durable + progress-queryable, sensory REST-only never spooled + dropped-unless-owner-live), owner exclusivity (CONTEXT Shell model)",
2026-06-22T02:37:07.5567392Z       "requiredStages": [
2026-06-22T02:37:07.5567497Z         "impl",
2026-06-22T02:37:07.5567600Z         "unit",
2026-06-22T02:37:07.5567711Z         "int"
2026-06-22T02:37:07.5567812Z       ],
2026-06-22T02:37:07.5567924Z       "stages": {
2026-06-22T02:37:07.5568029Z         "doc": {
2026-06-22T02:37:07.5568138Z           "complete": false,
2026-06-22T02:37:07.5568255Z           "evidence": []
2026-06-22T02:37:07.5568494Z         },
2026-06-22T02:37:07.5568603Z         "impl": {
2026-06-22T02:37:07.5568714Z           "complete": true,
2026-06-22T02:37:07.5568828Z           "evidence": [
2026-06-22T02:37:07.5568927Z             {
2026-06-22T02:37:07.5569186Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5569285Z               "line": 189
2026-06-22T02:37:07.5569405Z             },
2026-06-22T02:37:07.5569510Z             {
2026-06-22T02:37:07.5569663Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5569772Z               "line": 268
2026-06-22T02:37:07.5569877Z             },
2026-06-22T02:37:07.5569983Z             {
2026-06-22T02:37:07.5570229Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5570331Z               "line": 27
2026-06-22T02:37:07.5570435Z             },
2026-06-22T02:37:07.5570539Z             {
2026-06-22T02:37:07.5570686Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5570798Z               "line": 52
2026-06-22T02:37:07.5570907Z             },
2026-06-22T02:37:07.5571009Z             {
2026-06-22T02:37:07.5571155Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5571261Z               "line": 144
2026-06-22T02:37:07.5571366Z             },
2026-06-22T02:37:07.5571475Z             {
2026-06-22T02:37:07.5571615Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5571719Z               "line": 176
2026-06-22T02:37:07.5571823Z             },
2026-06-22T02:37:07.5571924Z             {
2026-06-22T02:37:07.5572072Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5572186Z               "line": 22
2026-06-22T02:37:07.5572292Z             },
2026-06-22T02:37:07.5572387Z             {
2026-06-22T02:37:07.5572530Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5572644Z               "line": 65
2026-06-22T02:37:07.5572744Z             },
2026-06-22T02:37:07.5572855Z             {
2026-06-22T02:37:07.5572996Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5573116Z               "line": 76
2026-06-22T02:37:07.5573222Z             },
2026-06-22T02:37:07.5573320Z             {
2026-06-22T02:37:07.5573467Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5573568Z               "line": 151
2026-06-22T02:37:07.5573672Z             },
2026-06-22T02:37:07.5573777Z             {
2026-06-22T02:37:07.5573916Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5574025Z               "line": 210
2026-06-22T02:37:07.5574131Z             },
2026-06-22T02:37:07.5574245Z             {
2026-06-22T02:37:07.5574383Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5574484Z               "line": 259
2026-06-22T02:37:07.5574584Z             },
2026-06-22T02:37:07.5574688Z             {
2026-06-22T02:37:07.5574828Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5574941Z               "line": 281
2026-06-22T02:37:07.5575050Z             },
2026-06-22T02:37:07.5575152Z             {
2026-06-22T02:37:07.5575293Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5575404Z               "line": 294
2026-06-22T02:37:07.5575509Z             },
2026-06-22T02:37:07.5575613Z             {
2026-06-22T02:37:07.5575755Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.5575859Z               "line": 217
2026-06-22T02:37:07.5575963Z             },
2026-06-22T02:37:07.5576063Z             {
2026-06-22T02:37:07.5576202Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.5576320Z               "line": 233
2026-06-22T02:37:07.5576411Z             },
2026-06-22T02:37:07.5576516Z             {
2026-06-22T02:37:07.5576663Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.5576764Z               "line": 41
2026-06-22T02:37:07.5576869Z             },
2026-06-22T02:37:07.5577084Z             {
2026-06-22T02:37:07.5577231Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.5577341Z               "line": 222
2026-06-22T02:37:07.5577441Z             },
2026-06-22T02:37:07.5577555Z             {
2026-06-22T02:37:07.5577700Z               "path": "crates/spt/src/api/delivery.rs",
2026-06-22T02:37:07.5577799Z               "line": 173
2026-06-22T02:37:07.5577903Z             },
2026-06-22T02:37:07.5578010Z             {
2026-06-22T02:37:07.5578142Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.5578252Z               "line": 354
2026-06-22T02:37:07.5578357Z             },
2026-06-22T02:37:07.5578532Z             {
2026-06-22T02:37:07.5578665Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.5578778Z               "line": 419
2026-06-22T02:37:07.5578887Z             },
2026-06-22T02:37:07.5579079Z             {
2026-06-22T02:37:07.5579226Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5579327Z               "line": 333
2026-06-22T02:37:07.5579436Z             },
2026-06-22T02:37:07.5579545Z             {
2026-06-22T02:37:07.5579670Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5579774Z               "line": 6320
2026-06-22T02:37:07.5579884Z             },
2026-06-22T02:37:07.5579985Z             {
2026-06-22T02:37:07.5580117Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5580228Z               "line": 6470
2026-06-22T02:37:07.5580328Z             },
2026-06-22T02:37:07.5580432Z             {
2026-06-22T02:37:07.5580553Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5580661Z               "line": 6646
2026-06-22T02:37:07.5580752Z             }
2026-06-22T02:37:07.5580858Z           ]
2026-06-22T02:37:07.5580958Z         },
2026-06-22T02:37:07.5581055Z         "int": {
2026-06-22T02:37:07.5581170Z           "complete": true,
2026-06-22T02:37:07.5581279Z           "evidence": [
2026-06-22T02:37:07.5581392Z             {
2026-06-22T02:37:07.5581549Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5581655Z               "line": 713
2026-06-22T02:37:07.5581759Z             },
2026-06-22T02:37:07.5581860Z             {
2026-06-22T02:37:07.5582012Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:37:07.5582121Z               "line": 8
2026-06-22T02:37:07.5582222Z             },
2026-06-22T02:37:07.5582322Z             {
2026-06-22T02:37:07.5582475Z               "path": "crates/spt-daemon/tests/shellchan.rs",
2026-06-22T02:37:07.5582584Z               "line": 49
2026-06-22T02:37:07.5582693Z             },
2026-06-22T02:37:07.5582804Z             {
2026-06-22T02:37:07.5582956Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5583070Z               "line": 778
2026-06-22T02:37:07.5583176Z             },
2026-06-22T02:37:07.5583285Z             {
2026-06-22T02:37:07.5583420Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5583552Z               "line": 1213
2026-06-22T02:37:07.5583642Z             },
2026-06-22T02:37:07.5583749Z             {
2026-06-22T02:37:07.5583904Z               "path": "crates/spt/tests/notify_shell_e2e.rs",
2026-06-22T02:37:07.5584008Z               "line": 17
2026-06-22T02:37:07.5584114Z             },
2026-06-22T02:37:07.5584214Z             {
2026-06-22T02:37:07.5584347Z               "path": "crates/spt/tests/shell_e2e.rs",
2026-06-22T02:37:07.5584457Z               "line": 14
2026-06-22T02:37:07.5584562Z             }
2026-06-22T02:37:07.5584657Z           ]
2026-06-22T02:37:07.5584758Z         },
2026-06-22T02:37:07.5584867Z         "unit": {
2026-06-22T02:37:07.5584981Z           "complete": true,
2026-06-22T02:37:07.5585092Z           "evidence": [
2026-06-22T02:37:07.5585192Z             {
2026-06-22T02:37:07.5585335Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5585449Z               "line": 246
2026-06-22T02:37:07.5585548Z             },
2026-06-22T02:37:07.5585759Z             {
2026-06-22T02:37:07.5585906Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5586018Z               "line": 279
2026-06-22T02:37:07.5586120Z             },
2026-06-22T02:37:07.5586224Z             {
2026-06-22T02:37:07.5586363Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5586475Z               "line": 319
2026-06-22T02:37:07.5586589Z             },
2026-06-22T02:37:07.5586681Z             {
2026-06-22T02:37:07.5586823Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5586928Z               "line": 599
2026-06-22T02:37:07.5587133Z             },
2026-06-22T02:37:07.5587238Z             {
2026-06-22T02:37:07.5587377Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5587486Z               "line": 672
2026-06-22T02:37:07.5587592Z             },
2026-06-22T02:37:07.5587701Z             {
2026-06-22T02:37:07.5587834Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5587950Z               "line": 816
2026-06-22T02:37:07.5588054Z             },
2026-06-22T02:37:07.5588154Z             {
2026-06-22T02:37:07.5588293Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.5588401Z               "line": 595
2026-06-22T02:37:07.5588497Z             },
2026-06-22T02:37:07.5588603Z             {
2026-06-22T02:37:07.5588745Z               "path": "crates/spt-store/src/shellinfo.rs",
2026-06-22T02:37:07.5588855Z               "line": 399
2026-06-22T02:37:07.5589016Z             },
2026-06-22T02:37:07.5589120Z             {
2026-06-22T02:37:07.5589244Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5589371Z               "line": 8976
2026-06-22T02:37:07.5589476Z             },
2026-06-22T02:37:07.5589572Z             {
2026-06-22T02:37:07.5589691Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5589800Z               "line": 9300
2026-06-22T02:37:07.5589901Z             },
2026-06-22T02:37:07.5590010Z             {
2026-06-22T02:37:07.5590139Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5590244Z               "line": 9717
2026-06-22T02:37:07.5590348Z             }
2026-06-22T02:37:07.5590453Z           ]
2026-06-22T02:37:07.5590554Z         }
2026-06-22T02:37:07.5590654Z       }
2026-06-22T02:37:07.5590749Z     },
2026-06-22T02:37:07.5590854Z     {
2026-06-22T02:37:07.5590973Z       "id": "REQ-SHELL-2",
2026-06-22T02:37:07.5592501Z       "title": "Shell sleep/wake: link-break always closes the binary (pre-close instruction + termination timeout), ephemeral teardown vs persistent offline/relink, wake_command wake-watcher (offline-only, exit-opcode supervision, exponential backoff + give-up), state-keyed wake resolution (dormant/suspended/active-elsewhere; no-reachable refuses — spawn-anywhere branch deferred), spt shutdown owner cascade + api owner-shutdown gated by can_shutdown (CONTEXT Shell sleep/wake)",
2026-06-22T02:37:07.5592624Z       "requiredStages": [
2026-06-22T02:37:07.5592725Z         "impl",
2026-06-22T02:37:07.5592829Z         "unit",
2026-06-22T02:37:07.5592934Z         "int"
2026-06-22T02:37:07.5593031Z       ],
2026-06-22T02:37:07.5593135Z       "stages": {
2026-06-22T02:37:07.5593235Z         "doc": {
2026-06-22T02:37:07.5593355Z           "complete": false,
2026-06-22T02:37:07.5593464Z           "evidence": []
2026-06-22T02:37:07.5593564Z         },
2026-06-22T02:37:07.5593675Z         "impl": {
2026-06-22T02:37:07.5593783Z           "complete": true,
2026-06-22T02:37:07.5593902Z           "evidence": [
2026-06-22T02:37:07.5594004Z             {
2026-06-22T02:37:07.5594154Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.5594275Z               "line": 217
2026-06-22T02:37:07.5594385Z             },
2026-06-22T02:37:07.5594492Z             {
2026-06-22T02:37:07.5594640Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5594747Z               "line": 403
2026-06-22T02:37:07.5595013Z             },
2026-06-22T02:37:07.5595118Z             {
2026-06-22T02:37:07.5595266Z               "path": "crates/spt-daemon/src/grants.rs",
2026-06-22T02:37:07.5595370Z               "line": 250
2026-06-22T02:37:07.5595479Z             },
2026-06-22T02:37:07.5595580Z             {
2026-06-22T02:37:07.5595727Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.5595832Z               "line": 403
2026-06-22T02:37:07.5595938Z             },
2026-06-22T02:37:07.5596042Z             {
2026-06-22T02:37:07.5596185Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5596287Z               "line": 30
2026-06-22T02:37:07.5596486Z             },
2026-06-22T02:37:07.5596592Z             {
2026-06-22T02:37:07.5596737Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5596842Z               "line": 409
2026-06-22T02:37:07.5596952Z             },
2026-06-22T02:37:07.5597050Z             {
2026-06-22T02:37:07.5597197Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5597304Z               "line": 445
2026-06-22T02:37:07.5597412Z             },
2026-06-22T02:37:07.5597512Z             {
2026-06-22T02:37:07.5597656Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5597760Z               "line": 660
2026-06-22T02:37:07.5597857Z             },
2026-06-22T02:37:07.5597956Z             {
2026-06-22T02:37:07.5598103Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.5598209Z               "line": 348
2026-06-22T02:37:07.5598309Z             },
2026-06-22T02:37:07.5598413Z             {
2026-06-22T02:37:07.5598561Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5598680Z               "line": 115
2026-06-22T02:37:07.5598786Z             },
2026-06-22T02:37:07.5598881Z             {
2026-06-22T02:37:07.5599106Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5599205Z               "line": 120
2026-06-22T02:37:07.5599315Z             },
2026-06-22T02:37:07.5599430Z             {
2026-06-22T02:37:07.5599571Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5599680Z               "line": 374
2026-06-22T02:37:07.5599776Z             },
2026-06-22T02:37:07.5599884Z             {
2026-06-22T02:37:07.5600026Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5600127Z               "line": 500
2026-06-22T02:37:07.5600222Z             },
2026-06-22T02:37:07.5600321Z             {
2026-06-22T02:37:07.5600466Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5600574Z               "line": 24
2026-06-22T02:37:07.5600685Z             },
2026-06-22T02:37:07.5600790Z             {
2026-06-22T02:37:07.5600932Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5601033Z               "line": 76
2026-06-22T02:37:07.5601133Z             },
2026-06-22T02:37:07.5601233Z             {
2026-06-22T02:37:07.5601377Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5601490Z               "line": 154
2026-06-22T02:37:07.5601595Z             },
2026-06-22T02:37:07.5601682Z             {
2026-06-22T02:37:07.5601829Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5601934Z               "line": 177
2026-06-22T02:37:07.5602040Z             },
2026-06-22T02:37:07.5602138Z             {
2026-06-22T02:37:07.5602271Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5602381Z               "line": 273
2026-06-22T02:37:07.5602484Z             },
2026-06-22T02:37:07.5602588Z             {
2026-06-22T02:37:07.5602737Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5602850Z               "line": 456
2026-06-22T02:37:07.5602951Z             },
2026-06-22T02:37:07.5603056Z             {
2026-06-22T02:37:07.5603198Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5603394Z               "line": 538
2026-06-22T02:37:07.5603499Z             },
2026-06-22T02:37:07.5603596Z             {
2026-06-22T02:37:07.5603757Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:37:07.5603866Z               "line": 27
2026-06-22T02:37:07.5603977Z             },
2026-06-22T02:37:07.5604086Z             {
2026-06-22T02:37:07.5604225Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:37:07.5604334Z               "line": 48
2026-06-22T02:37:07.5604439Z             },
2026-06-22T02:37:07.5604540Z             {
2026-06-22T02:37:07.5604681Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5604893Z               "line": 517
2026-06-22T02:37:07.5605001Z             },
2026-06-22T02:37:07.5605100Z             {
2026-06-22T02:37:07.5605234Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5605344Z               "line": 1921
2026-06-22T02:37:07.5605453Z             },
2026-06-22T02:37:07.5605554Z             {
2026-06-22T02:37:07.5605687Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5605791Z               "line": 6334
2026-06-22T02:37:07.5605893Z             },
2026-06-22T02:37:07.5606007Z             {
2026-06-22T02:37:07.5606130Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5606250Z               "line": 6395
2026-06-22T02:37:07.5606354Z             },
2026-06-22T02:37:07.5606455Z             {
2026-06-22T02:37:07.5606583Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5606688Z               "line": 6423
2026-06-22T02:37:07.5606794Z             },
2026-06-22T02:37:07.5606889Z             {
2026-06-22T02:37:07.5607017Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5607128Z               "line": 6477
2026-06-22T02:37:07.5607227Z             },
2026-06-22T02:37:07.5607331Z             {
2026-06-22T02:37:07.5607455Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5607563Z               "line": 6732
2026-06-22T02:37:07.5607672Z             },
2026-06-22T02:37:07.5607767Z             {
2026-06-22T02:37:07.5607896Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5608001Z               "line": 6792
2026-06-22T02:37:07.5608111Z             },
2026-06-22T02:37:07.5608211Z             {
2026-06-22T02:37:07.5608353Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.5608469Z               "line": 298
2026-06-22T02:37:07.5608573Z             },
2026-06-22T02:37:07.5608678Z             {
2026-06-22T02:37:07.5608811Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.5608916Z               "line": 339
2026-06-22T02:37:07.5609094Z             }
2026-06-22T02:37:07.5609207Z           ]
2026-06-22T02:37:07.5609312Z         },
2026-06-22T02:37:07.5609437Z         "int": {
2026-06-22T02:37:07.5609560Z           "complete": true,
2026-06-22T02:37:07.5609666Z           "evidence": [
2026-06-22T02:37:07.5609775Z             {
2026-06-22T02:37:07.5609923Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5610043Z               "line": 706
2026-06-22T02:37:07.5610146Z             },
2026-06-22T02:37:07.5610254Z             {
2026-06-22T02:37:07.5610402Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5610506Z               "line": 778
2026-06-22T02:37:07.5610615Z             },
2026-06-22T02:37:07.5610716Z             {
2026-06-22T02:37:07.5610863Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5610974Z               "line": 1213
2026-06-22T02:37:07.5611074Z             },
2026-06-22T02:37:07.5611187Z             {
2026-06-22T02:37:07.5611345Z               "path": "crates/spt/tests/shell_sleepwake_e2e.rs",
2026-06-22T02:37:07.5611468Z               "line": 18
2026-06-22T02:37:07.5611574Z             }
2026-06-22T02:37:07.5611679Z           ]
2026-06-22T02:37:07.5611783Z         },
2026-06-22T02:37:07.5611889Z         "unit": {
2026-06-22T02:37:07.5612008Z           "complete": true,
2026-06-22T02:37:07.5612213Z           "evidence": [
2026-06-22T02:37:07.5612318Z             {
2026-06-22T02:37:07.5612461Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5612581Z               "line": 744
2026-06-22T02:37:07.5612684Z             },
2026-06-22T02:37:07.5612788Z             {
2026-06-22T02:37:07.5612936Z               "path": "crates/spt-daemon/src/resting.rs",
2026-06-22T02:37:07.5613044Z               "line": 796
2026-06-22T02:37:07.5613153Z             },
2026-06-22T02:37:07.5613254Z             {
2026-06-22T02:37:07.5613401Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5613506Z               "line": 705
2026-06-22T02:37:07.5613706Z             },
2026-06-22T02:37:07.5613802Z             {
2026-06-22T02:37:07.5613945Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5614068Z               "line": 754
2026-06-22T02:37:07.5614170Z             },
2026-06-22T02:37:07.5614284Z             {
2026-06-22T02:37:07.5614436Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5614541Z               "line": 778
2026-06-22T02:37:07.5614651Z             },
2026-06-22T02:37:07.5614751Z             {
2026-06-22T02:37:07.5614903Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5615008Z               "line": 603
2026-06-22T02:37:07.5615114Z             },
2026-06-22T02:37:07.5615223Z             {
2026-06-22T02:37:07.5615371Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5615481Z               "line": 624
2026-06-22T02:37:07.5615580Z             },
2026-06-22T02:37:07.5615684Z             {
2026-06-22T02:37:07.5615828Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5615947Z               "line": 660
2026-06-22T02:37:07.5616042Z             },
2026-06-22T02:37:07.5616143Z             {
2026-06-22T02:37:07.5616285Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5616401Z               "line": 714
2026-06-22T02:37:07.5616505Z             },
2026-06-22T02:37:07.5616604Z             {
2026-06-22T02:37:07.5616753Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5616867Z               "line": 732
2026-06-22T02:37:07.5616971Z             },
2026-06-22T02:37:07.5617082Z             {
2026-06-22T02:37:07.5617220Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5617330Z               "line": 766
2026-06-22T02:37:07.5617430Z             },
2026-06-22T02:37:07.5617534Z             {
2026-06-22T02:37:07.5617688Z               "path": "crates/spt-daemon/src/shellwake.rs",
2026-06-22T02:37:07.5617796Z               "line": 841
2026-06-22T02:37:07.5617905Z             },
2026-06-22T02:37:07.5618010Z             {
2026-06-22T02:37:07.5618151Z               "path": "crates/spt-net/src/net/shelllink.rs",
2026-06-22T02:37:07.5618256Z               "line": 85
2026-06-22T02:37:07.5618366Z             },
2026-06-22T02:37:07.5618466Z             {
2026-06-22T02:37:07.5618589Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5618709Z               "line": 8044
2026-06-22T02:37:07.5618814Z             },
2026-06-22T02:37:07.5618913Z             {
2026-06-22T02:37:07.5619114Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5619219Z               "line": 9054
2026-06-22T02:37:07.5619325Z             },
2026-06-22T02:37:07.5619434Z             {
2026-06-22T02:37:07.5619562Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5619673Z               "line": 9124
2026-06-22T02:37:07.5619782Z             },
2026-06-22T02:37:07.5619877Z             {
2026-06-22T02:37:07.5619997Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5620111Z               "line": 9162
2026-06-22T02:37:07.5620217Z             }
2026-06-22T02:37:07.5620321Z           ]
2026-06-22T02:37:07.5620426Z         }
2026-06-22T02:37:07.5620531Z       }
2026-06-22T02:37:07.5620632Z     },
2026-06-22T02:37:07.5620834Z     {
2026-06-22T02:37:07.5620958Z       "id": "REQ-SHELL-3",
2026-06-22T02:37:07.5622783Z       "title": "Drive channel (owner->shell, REST-only, never-spooled, latest-wins): the owner->shell mirror of sensory for continuous real-time control (scroll/crank/stick/avatar) — a [shell.drive] manifest vocab + EVENT_TYPE_DRIVE frame, delivered to the ONLINE binary only via a single live slot (a new frame supersedes an undelivered one — no spool, no queue, no replay on relink), dropped-with-diagnostic if the shell is offline; cross-node rides the ephemeral link (REST class), never the durable shell spool. Commands = discrete+durable; drive = continuous+ephemeral (CONTEXT:260, minted 2026-06-11 Gateway grill).",
2026-06-22T02:37:07.5623026Z       "requiredStages": [
2026-06-22T02:37:07.5623137Z         "impl",
2026-06-22T02:37:07.5623244Z         "unit",
2026-06-22T02:37:07.5623339Z         "int"
2026-06-22T02:37:07.5623444Z       ],
2026-06-22T02:37:07.5623552Z       "stages": {
2026-06-22T02:37:07.5623665Z         "doc": {
2026-06-22T02:37:07.5623785Z           "complete": false,
2026-06-22T02:37:07.5623900Z           "evidence": []
2026-06-22T02:37:07.5624004Z         },
2026-06-22T02:37:07.5624105Z         "impl": {
2026-06-22T02:37:07.5624215Z           "complete": true,
2026-06-22T02:37:07.5624323Z           "evidence": [
2026-06-22T02:37:07.5624430Z             {
2026-06-22T02:37:07.5624586Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.5624691Z               "line": 229
2026-06-22T02:37:07.5624796Z             },
2026-06-22T02:37:07.5624905Z             {
2026-06-22T02:37:07.5625050Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5625173Z               "line": 36
2026-06-22T02:37:07.5625268Z             },
2026-06-22T02:37:07.5625379Z             {
2026-06-22T02:37:07.5625525Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5625631Z               "line": 137
2026-06-22T02:37:07.5625741Z             },
2026-06-22T02:37:07.5625840Z             {
2026-06-22T02:37:07.5625984Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5626093Z               "line": 153
2026-06-22T02:37:07.5626197Z             },
2026-06-22T02:37:07.5626301Z             {
2026-06-22T02:37:07.5626441Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5626554Z               "line": 165
2026-06-22T02:37:07.5626660Z             },
2026-06-22T02:37:07.5626765Z             {
2026-06-22T02:37:07.5626907Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5627018Z               "line": 242
2026-06-22T02:37:07.5627127Z             },
2026-06-22T02:37:07.5627237Z             {
2026-06-22T02:37:07.5627380Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5627494Z               "line": 267
2026-06-22T02:37:07.5627590Z             },
2026-06-22T02:37:07.5627694Z             {
2026-06-22T02:37:07.5627836Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5627934Z               "line": 293
2026-06-22T02:37:07.5628042Z             },
2026-06-22T02:37:07.5628147Z             {
2026-06-22T02:37:07.5629150Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:37:07.5629288Z               "line": 51
2026-06-22T02:37:07.5629407Z             },
2026-06-22T02:37:07.5629508Z             {
2026-06-22T02:37:07.5629660Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5629774Z               "line": 333
2026-06-22T02:37:07.5629885Z             },
2026-06-22T02:37:07.5629989Z             {
2026-06-22T02:37:07.5630137Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5630266Z               "line": 373
2026-06-22T02:37:07.5630365Z             },
2026-06-22T02:37:07.5630472Z             {
2026-06-22T02:37:07.5630613Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5630733Z               "line": 602
2026-06-22T02:37:07.5630829Z             },
2026-06-22T02:37:07.5631106Z             {
2026-06-22T02:37:07.5631313Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5631423Z               "line": 132
2026-06-22T02:37:07.5631527Z             },
2026-06-22T02:37:07.5631630Z             {
2026-06-22T02:37:07.5631778Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5631889Z               "line": 448
2026-06-22T02:37:07.5631997Z             },
2026-06-22T02:37:07.5632094Z             {
2026-06-22T02:37:07.5632232Z               "path": "crates/spt-proto/src/event.rs",
2026-06-22T02:37:07.5632350Z               "line": 74
2026-06-22T02:37:07.5632538Z             },
2026-06-22T02:37:07.5632641Z             {
2026-06-22T02:37:07.5632790Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5632899Z               "line": 605
2026-06-22T02:37:07.5633009Z             },
2026-06-22T02:37:07.5633105Z             {
2026-06-22T02:37:07.5633247Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5633353Z               "line": 396
2026-06-22T02:37:07.5633462Z             },
2026-06-22T02:37:07.5633571Z             {
2026-06-22T02:37:07.5633692Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5633809Z               "line": 6518
2026-06-22T02:37:07.5633899Z             }
2026-06-22T02:37:07.5634009Z           ]
2026-06-22T02:37:07.5634112Z         },
2026-06-22T02:37:07.5634231Z         "int": {
2026-06-22T02:37:07.5634345Z           "complete": true,
2026-06-22T02:37:07.5634455Z           "evidence": [
2026-06-22T02:37:07.5634603Z             {
2026-06-22T02:37:07.5634784Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5634907Z               "line": 1262
2026-06-22T02:37:07.5635009Z             },
2026-06-22T02:37:07.5635118Z             {
2026-06-22T02:37:07.5635261Z               "path": "crates/spt/tests/drive_e2e.rs",
2026-06-22T02:37:07.5635361Z               "line": 17
2026-06-22T02:37:07.5635479Z             }
2026-06-22T02:37:07.5635576Z           ]
2026-06-22T02:37:07.5635685Z         },
2026-06-22T02:37:07.5635785Z         "unit": {
2026-06-22T02:37:07.5635896Z           "complete": true,
2026-06-22T02:37:07.5636014Z           "evidence": [
2026-06-22T02:37:07.5636114Z             {
2026-06-22T02:37:07.5636264Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5636371Z               "line": 311
2026-06-22T02:37:07.5636482Z             },
2026-06-22T02:37:07.5636588Z             {
2026-06-22T02:37:07.5636738Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5636852Z               "line": 325
2026-06-22T02:37:07.5636963Z             },
2026-06-22T02:37:07.5637062Z             {
2026-06-22T02:37:07.5637196Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5637306Z               "line": 343
2026-06-22T02:37:07.5637396Z             },
2026-06-22T02:37:07.5637506Z             {
2026-06-22T02:37:07.5637649Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5637762Z               "line": 364
2026-06-22T02:37:07.5637869Z             },
2026-06-22T02:37:07.5637973Z             {
2026-06-22T02:37:07.5638111Z               "path": "crates/spt-daemon/src/drivehub.rs",
2026-06-22T02:37:07.5638221Z               "line": 376
2026-06-22T02:37:07.5638326Z             },
2026-06-22T02:37:07.5638436Z             {
2026-06-22T02:37:07.5638579Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5638693Z               "line": 897
2026-06-22T02:37:07.5638794Z             },
2026-06-22T02:37:07.5638898Z             {
2026-06-22T02:37:07.5639136Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5639248Z               "line": 957
2026-06-22T02:37:07.5639352Z             },
2026-06-22T02:37:07.5639458Z             {
2026-06-22T02:37:07.5639610Z               "path": "crates/spt-daemon/src/shellchan.rs",
2026-06-22T02:37:07.5639715Z               "line": 338
2026-06-22T02:37:07.5639939Z             },
2026-06-22T02:37:07.5640029Z             {
2026-06-22T02:37:07.5640173Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.5640287Z               "line": 769
2026-06-22T02:37:07.5640388Z             },
2026-06-22T02:37:07.5640492Z             {
2026-06-22T02:37:07.5640625Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5640741Z               "line": 8836
2026-06-22T02:37:07.5640849Z             }
2026-06-22T02:37:07.5640954Z           ]
2026-06-22T02:37:07.5641060Z         }
2026-06-22T02:37:07.5641164Z       }
2026-06-22T02:37:07.5641269Z     },
2026-06-22T02:37:07.5641366Z     {
2026-06-22T02:37:07.5641584Z       "id": "REQ-SHELL-4",
2026-06-22T02:37:07.5643416Z       "title": "Shell tunnel (reliable-ordered opaque byte stream): an owner<->shell link may hold a long-lived, reliable-ordered, link-bound QUIC stream pair carrying opaque wire protocol traffic the channel taxonomy must NOT reinterpret (first consumer usbip URB) — manifest opt-in, not enveloped, not MAC-framed, not spooled; the link lifecycle governs it (a link-break closes the tunnel). Reliable-ordered ⇒ congestion surfaces as lag never loss ⇒ acceptable only on-LAN: the on-LAN posture is documented and the tunnel is NOT proven cross-WAN (CONTEXT:262, minted 2026-06-11 Gateway grill; doyle gate C2).",
2026-06-22T02:37:07.5643554Z       "requiredStages": [
2026-06-22T02:37:07.5643670Z         "doc",
2026-06-22T02:37:07.5643774Z         "impl",
2026-06-22T02:37:07.5643884Z         "unit",
2026-06-22T02:37:07.5643990Z         "int"
2026-06-22T02:37:07.5644093Z       ],
2026-06-22T02:37:07.5644204Z       "stages": {
2026-06-22T02:37:07.5644309Z         "doc": {
2026-06-22T02:37:07.5644436Z           "complete": true,
2026-06-22T02:37:07.5644541Z           "evidence": [
2026-06-22T02:37:07.5644645Z             {
2026-06-22T02:37:07.5644771Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5644877Z               "line": 281
2026-06-22T02:37:07.5644988Z             },
2026-06-22T02:37:07.5645096Z             {
2026-06-22T02:37:07.5645354Z               "path": "docs/adr/0020-event-envelope-sole-arriving-format-reply-to-removed.md",
2026-06-22T02:37:07.5645467Z               "line": 88
2026-06-22T02:37:07.5645574Z             }
2026-06-22T02:37:07.5645678Z           ]
2026-06-22T02:37:07.5645782Z         },
2026-06-22T02:37:07.5645884Z         "impl": {
2026-06-22T02:37:07.5645988Z           "complete": true,
2026-06-22T02:37:07.5646106Z           "evidence": [
2026-06-22T02:37:07.5646213Z             {
2026-06-22T02:37:07.5646364Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.5646475Z               "line": 243
2026-06-22T02:37:07.5649841Z             },
2026-06-22T02:37:07.5649979Z             {
2026-06-22T02:37:07.5650151Z               "path": "crates/spt-daemon/src/endpoint.rs",
2026-06-22T02:37:07.5650270Z               "line": 61
2026-06-22T02:37:07.5650371Z             },
2026-06-22T02:37:07.5650470Z             {
2026-06-22T02:37:07.5650638Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5650747Z               "line": 218
2026-06-22T02:37:07.5650856Z             },
2026-06-22T02:37:07.5650958Z             {
2026-06-22T02:37:07.5651109Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5651219Z               "line": 245
2026-06-22T02:37:07.5651329Z             },
2026-06-22T02:37:07.5651434Z             {
2026-06-22T02:37:07.5651567Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5651682Z               "line": 566
2026-06-22T02:37:07.5651782Z             },
2026-06-22T02:37:07.5651882Z             {
2026-06-22T02:37:07.5652039Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5652144Z               "line": 1141
2026-06-22T02:37:07.5652255Z             },
2026-06-22T02:37:07.5652349Z             {
2026-06-22T02:37:07.5652500Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5652610Z               "line": 1153
2026-06-22T02:37:07.5652870Z             },
2026-06-22T02:37:07.5652975Z             {
2026-06-22T02:37:07.5653117Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5653224Z               "line": 1194
2026-06-22T02:37:07.5653329Z             },
2026-06-22T02:37:07.5653418Z             {
2026-06-22T02:37:07.5653567Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5653676Z               "line": 456
2026-06-22T02:37:07.5653786Z             },
2026-06-22T02:37:07.5653886Z             {
2026-06-22T02:37:07.5654034Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5654230Z               "line": 44
2026-06-22T02:37:07.5654339Z             },
2026-06-22T02:37:07.5654439Z             {
2026-06-22T02:37:07.5654582Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5654696Z               "line": 208
2026-06-22T02:37:07.5654798Z             },
2026-06-22T02:37:07.5654902Z             {
2026-06-22T02:37:07.5655062Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5655167Z               "line": 227
2026-06-22T02:37:07.5655261Z             },
2026-06-22T02:37:07.5655370Z             {
2026-06-22T02:37:07.5655518Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5655627Z               "line": 253
2026-06-22T02:37:07.5655727Z             },
2026-06-22T02:37:07.5655829Z             {
2026-06-22T02:37:07.5655975Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5656091Z               "line": 272
2026-06-22T02:37:07.5656200Z             },
2026-06-22T02:37:07.5656648Z             {
2026-06-22T02:37:07.5656806Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5656929Z               "line": 392
2026-06-22T02:37:07.5657026Z             },
2026-06-22T02:37:07.5657135Z             {
2026-06-22T02:37:07.5657282Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5657393Z               "line": 421
2026-06-22T02:37:07.5657496Z             },
2026-06-22T02:37:07.5657597Z             {
2026-06-22T02:37:07.5657746Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5657853Z               "line": 439
2026-06-22T02:37:07.5657958Z             },
2026-06-22T02:37:07.5658068Z             {
2026-06-22T02:37:07.5658211Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5658307Z               "line": 458
2026-06-22T02:37:07.5658411Z             },
2026-06-22T02:37:07.5658511Z             {
2026-06-22T02:37:07.5658641Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5658765Z               "line": 486
2026-06-22T02:37:07.5658873Z             },
2026-06-22T02:37:07.5659036Z             {
2026-06-22T02:37:07.5659183Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5659290Z               "line": 624
2026-06-22T02:37:07.5659408Z             },
2026-06-22T02:37:07.5659503Z             {
2026-06-22T02:37:07.5659652Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5659760Z               "line": 829
2026-06-22T02:37:07.5659865Z             },
2026-06-22T02:37:07.5659967Z             {
2026-06-22T02:37:07.5660113Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5660222Z               "line": 435
2026-06-22T02:37:07.5660321Z             },
2026-06-22T02:37:07.5660430Z             {
2026-06-22T02:37:07.5660563Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5660674Z               "line": 6574
2026-06-22T02:37:07.5660782Z             }
2026-06-22T02:37:07.5660892Z           ]
2026-06-22T02:37:07.5660998Z         },
2026-06-22T02:37:07.5661092Z         "int": {
2026-06-22T02:37:07.5661218Z           "complete": true,
2026-06-22T02:37:07.5661326Z           "evidence": [
2026-06-22T02:37:07.5661431Z             {
2026-06-22T02:37:07.5661579Z               "path": "crates/spt/tests/tunnel_e2e.rs",
2026-06-22T02:37:07.5661793Z               "line": 18
2026-06-22T02:37:07.5661889Z             }
2026-06-22T02:37:07.5661994Z           ]
2026-06-22T02:37:07.5662098Z         },
2026-06-22T02:37:07.5662209Z         "unit": {
2026-06-22T02:37:07.5662313Z           "complete": true,
2026-06-22T02:37:07.5662423Z           "evidence": [
2026-06-22T02:37:07.5662524Z             {
2026-06-22T02:37:07.5662676Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5662786Z               "line": 1391
2026-06-22T02:37:07.5662890Z             },
2026-06-22T02:37:07.5662999Z             {
2026-06-22T02:37:07.5663132Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5663363Z               "line": 1420
2026-06-22T02:37:07.5663469Z             },
2026-06-22T02:37:07.5663569Z             {
2026-06-22T02:37:07.5663711Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5663822Z               "line": 504
2026-06-22T02:37:07.5663935Z             },
2026-06-22T02:37:07.5664036Z             {
2026-06-22T02:37:07.5664175Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5664284Z               "line": 514
2026-06-22T02:37:07.5664389Z             },
2026-06-22T02:37:07.5664489Z             {
2026-06-22T02:37:07.5664636Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5664747Z               "line": 531
2026-06-22T02:37:07.5664847Z             },
2026-06-22T02:37:07.5664951Z             {
2026-06-22T02:37:07.5665090Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5665199Z               "line": 543
2026-06-22T02:37:07.5665310Z             },
2026-06-22T02:37:07.5665410Z             {
2026-06-22T02:37:07.5665556Z               "path": "crates/spt-daemon/src/tunnelhub.rs",
2026-06-22T02:37:07.5665661Z               "line": 555
2026-06-22T02:37:07.5665770Z             },
2026-06-22T02:37:07.5665868Z             {
2026-06-22T02:37:07.5666016Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5666127Z               "line": 1145
2026-06-22T02:37:07.5666235Z             },
2026-06-22T02:37:07.5666341Z             {
2026-06-22T02:37:07.5666474Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.5666588Z               "line": 776
2026-06-22T02:37:07.5666689Z             }
2026-06-22T02:37:07.5666789Z           ]
2026-06-22T02:37:07.5666898Z         }
2026-06-22T02:37:07.5666999Z       }
2026-06-22T02:37:07.5667108Z     },
2026-06-22T02:37:07.5667208Z     {
2026-06-22T02:37:07.5667324Z       "id": "REQ-SHELL-5",
2026-06-22T02:37:07.5668576Z       "title": "Shell ownership is owner-type-agnostic: any non-Shell endpoint type may own/spawn/drive/command/link a shell (Gateway the named first) — control-exclusivity keys on the owner endpoint_id, NEVER on the owner's endpoint type. No ownership path (mint, launch, owner-from-link, cmd, drive, tunnel, sleep/wake, owner-shutdown) inspects the owner's type (CONTEXT:264, ratified 2026-06-11 Gateway grill).",
2026-06-22T02:37:07.5668710Z       "requiredStages": [
2026-06-22T02:37:07.5668814Z         "doc",
2026-06-22T02:37:07.5668920Z         "impl",
2026-06-22T02:37:07.5669104Z         "unit",
2026-06-22T02:37:07.5669206Z         "int"
2026-06-22T02:37:07.5669315Z       ],
2026-06-22T02:37:07.5669414Z       "stages": {
2026-06-22T02:37:07.5669506Z         "doc": {
2026-06-22T02:37:07.5669620Z           "complete": true,
2026-06-22T02:37:07.5669729Z           "evidence": [
2026-06-22T02:37:07.5669840Z             {
2026-06-22T02:37:07.5669963Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5670077Z               "line": 284
2026-06-22T02:37:07.5670184Z             }
2026-06-22T02:37:07.5670287Z           ]
2026-06-22T02:37:07.5670392Z         },
2026-06-22T02:37:07.5670499Z         "impl": {
2026-06-22T02:37:07.5670606Z           "complete": true,
2026-06-22T02:37:07.5670715Z           "evidence": [
2026-06-22T02:37:07.5670820Z             {
2026-06-22T02:37:07.5671090Z               "path": "crates/spt-daemon/src/shellhost.rs",
2026-06-22T02:37:07.5671200Z               "line": 260
2026-06-22T02:37:07.5671304Z             }
2026-06-22T02:37:07.5671405Z           ]
2026-06-22T02:37:07.5671510Z         },
2026-06-22T02:37:07.5671614Z         "int": {
2026-06-22T02:37:07.5671729Z           "complete": true,
2026-06-22T02:37:07.5671839Z           "evidence": [
2026-06-22T02:37:07.5671943Z             {
2026-06-22T02:37:07.5672092Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5672201Z               "line": 827
2026-06-22T02:37:07.5672305Z             },
2026-06-22T02:37:07.5672407Z             {
2026-06-22T02:37:07.5672649Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5672755Z               "line": 1290
2026-06-22T02:37:07.5672858Z             },
2026-06-22T02:37:07.5672968Z             {
2026-06-22T02:37:07.5673131Z               "path": "crates/spt/tests/gateway_owner_shell_e2e.rs",
2026-06-22T02:37:07.5673250Z               "line": 23
2026-06-22T02:37:07.5673351Z             }
2026-06-22T02:37:07.5673455Z           ]
2026-06-22T02:37:07.5673564Z         },
2026-06-22T02:37:07.5673663Z         "unit": {
2026-06-22T02:37:07.5673777Z           "complete": true,
2026-06-22T02:37:07.5673885Z           "evidence": [
2026-06-22T02:37:07.5673995Z             {
2026-06-22T02:37:07.5674143Z               "path": "crates/spt-daemon/src/linkhost.rs",
2026-06-22T02:37:07.5674252Z               "line": 803
2026-06-22T02:37:07.5674358Z             }
2026-06-22T02:37:07.5674449Z           ]
2026-06-22T02:37:07.5674553Z         }
2026-06-22T02:37:07.5674650Z       }
2026-06-22T02:37:07.5674759Z     },
2026-06-22T02:37:07.5674858Z     {
2026-06-22T02:37:07.5674979Z       "id": "REQ-START-1",
2026-06-22T02:37:07.5675187Z       "title": "Adapters never resolve SPT_HOME; binary on PATH; api bridging only",
2026-06-22T02:37:07.5675303Z       "requiredStages": [
2026-06-22T02:37:07.5675402Z         "impl",
2026-06-22T02:37:07.5675511Z         "unit"
2026-06-22T02:37:07.5675618Z       ],
2026-06-22T02:37:07.5675721Z       "stages": {
2026-06-22T02:37:07.5675831Z         "doc": {
2026-06-22T02:37:07.5675947Z           "complete": false,
2026-06-22T02:37:07.5676055Z           "evidence": []
2026-06-22T02:37:07.5676158Z         },
2026-06-22T02:37:07.5676264Z         "impl": {
2026-06-22T02:37:07.5676386Z           "complete": true,
2026-06-22T02:37:07.5676485Z           "evidence": [
2026-06-22T02:37:07.5676581Z             {
2026-06-22T02:37:07.5676729Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:37:07.5676838Z               "line": 16
2026-06-22T02:37:07.5676944Z             }
2026-06-22T02:37:07.5677053Z           ]
2026-06-22T02:37:07.5677163Z         },
2026-06-22T02:37:07.5677263Z         "int": {
2026-06-22T02:37:07.5677373Z           "complete": false,
2026-06-22T02:37:07.5677487Z           "evidence": []
2026-06-22T02:37:07.5677587Z         },
2026-06-22T02:37:07.5677697Z         "unit": {
2026-06-22T02:37:07.5677816Z           "complete": true,
2026-06-22T02:37:07.5677931Z           "evidence": [
2026-06-22T02:37:07.5678035Z             {
2026-06-22T02:37:07.5678175Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:37:07.5678288Z               "line": 48
2026-06-22T02:37:07.5678397Z             },
2026-06-22T02:37:07.5678504Z             {
2026-06-22T02:37:07.5678631Z               "path": "crates/spt-store/src/seed.rs",
2026-06-22T02:37:07.5678742Z               "line": 63
2026-06-22T02:37:07.5678837Z             }
2026-06-22T02:37:07.5679012Z           ]
2026-06-22T02:37:07.5679102Z         }
2026-06-22T02:37:07.5679198Z       }
2026-06-22T02:37:07.5679307Z     },
2026-06-22T02:37:07.5679407Z     {
2026-06-22T02:37:07.5679527Z       "id": "REQ-START-2",
2026-06-22T02:37:07.5679727Z       "title": "Harness-hosted startup: api seed then listen",
2026-06-22T02:37:07.5679842Z       "requiredStages": [
2026-06-22T02:37:07.5679946Z         "impl",
2026-06-22T02:37:07.5680051Z         "unit",
2026-06-22T02:37:07.5680257Z         "int"
2026-06-22T02:37:07.5680356Z       ],
2026-06-22T02:37:07.5680467Z       "stages": {
2026-06-22T02:37:07.5680572Z         "doc": {
2026-06-22T02:37:07.5680686Z           "complete": false,
2026-06-22T02:37:07.5680796Z           "evidence": []
2026-06-22T02:37:07.5680895Z         },
2026-06-22T02:37:07.5681000Z         "impl": {
2026-06-22T02:37:07.5681111Z           "complete": true,
2026-06-22T02:37:07.5681214Z           "evidence": [
2026-06-22T02:37:07.5681318Z             {
2026-06-22T02:37:07.5681461Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5681574Z               "line": 16
2026-06-22T02:37:07.5681765Z             },
2026-06-22T02:37:07.5681869Z             {
2026-06-22T02:37:07.5682003Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5682108Z               "line": 115
2026-06-22T02:37:07.5682212Z             },
2026-06-22T02:37:07.5682313Z             {
2026-06-22T02:37:07.5682452Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5682560Z               "line": 300
2026-06-22T02:37:07.5682667Z             }
2026-06-22T02:37:07.5682771Z           ]
2026-06-22T02:37:07.5682880Z         },
2026-06-22T02:37:07.5682981Z         "int": {
2026-06-22T02:37:07.5683095Z           "complete": true,
2026-06-22T02:37:07.5683195Z           "evidence": [
2026-06-22T02:37:07.5683301Z             {
2026-06-22T02:37:07.5683448Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.5683558Z               "line": 186
2026-06-22T02:37:07.5683659Z             }
2026-06-22T02:37:07.5683762Z           ]
2026-06-22T02:37:07.5683858Z         },
2026-06-22T02:37:07.5683969Z         "unit": {
2026-06-22T02:37:07.5684076Z           "complete": true,
2026-06-22T02:37:07.5684185Z           "evidence": [
2026-06-22T02:37:07.5684286Z             {
2026-06-22T02:37:07.5684417Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5684522Z               "line": 590
2026-06-22T02:37:07.5684632Z             },
2026-06-22T02:37:07.5684741Z             {
2026-06-22T02:37:07.5684880Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5684990Z               "line": 623
2026-06-22T02:37:07.5685094Z             }
2026-06-22T02:37:07.5685195Z           ]
2026-06-22T02:37:07.5685295Z         }
2026-06-22T02:37:07.5685399Z       }
2026-06-22T02:37:07.5685524Z     },
2026-06-22T02:37:07.5685618Z     {
2026-06-22T02:37:07.5685728Z       "id": "REQ-START-3",
2026-06-22T02:37:07.5685919Z       "title": "spt-hosted startup: spawn-session then api bind (no file)",
2026-06-22T02:37:07.5686033Z       "requiredStages": [
2026-06-22T02:37:07.5686144Z         "impl",
2026-06-22T02:37:07.5686253Z         "unit",
2026-06-22T02:37:07.5686358Z         "int"
2026-06-22T02:37:07.5686459Z       ],
2026-06-22T02:37:07.5686563Z       "stages": {
2026-06-22T02:37:07.5686657Z         "doc": {
2026-06-22T02:37:07.5686767Z           "complete": false,
2026-06-22T02:37:07.5686871Z           "evidence": []
2026-06-22T02:37:07.5686984Z         },
2026-06-22T02:37:07.5687093Z         "impl": {
2026-06-22T02:37:07.5687204Z           "complete": true,
2026-06-22T02:37:07.5687308Z           "evidence": [
2026-06-22T02:37:07.5687408Z             {
2026-06-22T02:37:07.5687552Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.5687660Z               "line": 23
2026-06-22T02:37:07.5687772Z             },
2026-06-22T02:37:07.5687876Z             {
2026-06-22T02:37:07.5688008Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.5688119Z               "line": 205
2026-06-22T02:37:07.5688223Z             },
2026-06-22T02:37:07.5688328Z             {
2026-06-22T02:37:07.5688458Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.5688572Z               "line": 221
2026-06-22T02:37:07.5688682Z             },
2026-06-22T02:37:07.5688777Z             {
2026-06-22T02:37:07.5688915Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5689196Z               "line": 17
2026-06-22T02:37:07.5689302Z             },
2026-06-22T02:37:07.5689407Z             {
2026-06-22T02:37:07.5689543Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5689648Z               "line": 35
2026-06-22T02:37:07.5689754Z             },
2026-06-22T02:37:07.5689849Z             {
2026-06-22T02:37:07.5689977Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5690092Z               "line": 116
2026-06-22T02:37:07.5690187Z             }
2026-06-22T02:37:07.5690297Z           ]
2026-06-22T02:37:07.5690407Z         },
2026-06-22T02:37:07.5690506Z         "int": {
2026-06-22T02:37:07.5690726Z           "complete": true,
2026-06-22T02:37:07.5690835Z           "evidence": [
2026-06-22T02:37:07.5690936Z             {
2026-06-22T02:37:07.5691074Z               "path": "crates/spt/tests/contract_e2e.rs",
2026-06-22T02:37:07.5691183Z               "line": 488
2026-06-22T02:37:07.5691289Z             }
2026-06-22T02:37:07.5691398Z           ]
2026-06-22T02:37:07.5691507Z         },
2026-06-22T02:37:07.5691614Z         "unit": {
2026-06-22T02:37:07.5691727Z           "complete": true,
2026-06-22T02:37:07.5691836Z           "evidence": [
2026-06-22T02:37:07.5691940Z             {
2026-06-22T02:37:07.5692091Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.5692200Z               "line": 381
2026-06-22T02:37:07.5692306Z             },
2026-06-22T02:37:07.5692406Z             {
2026-06-22T02:37:07.5692544Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.5692644Z               "line": 402
2026-06-22T02:37:07.5692753Z             },
2026-06-22T02:37:07.5692864Z             {
2026-06-22T02:37:07.5693007Z               "path": "crates/spt-daemon/src/seedmap.rs",
2026-06-22T02:37:07.5693106Z               "line": 412
2026-06-22T02:37:07.5693207Z             },
2026-06-22T02:37:07.5693316Z             {
2026-06-22T02:37:07.5693450Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5693565Z               "line": 591
2026-06-22T02:37:07.5693665Z             },
2026-06-22T02:37:07.5693764Z             {
2026-06-22T02:37:07.5693890Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5693993Z               "line": 624
2026-06-22T02:37:07.5694099Z             },
2026-06-22T02:37:07.5694209Z             {
2026-06-22T02:37:07.5694342Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5694457Z               "line": 657
2026-06-22T02:37:07.5694562Z             }
2026-06-22T02:37:07.5694670Z           ]
2026-06-22T02:37:07.5694760Z         }
2026-06-22T02:37:07.5694865Z       }
2026-06-22T02:37:07.5694982Z     },
2026-06-22T02:37:07.5695082Z     {
2026-06-22T02:37:07.5695197Z       "id": "REQ-START-4",
2026-06-22T02:37:07.5695358Z       "title": "Adapter-injected env aliases (SPT/OWL/LIVE)",
2026-06-22T02:37:07.5695469Z       "requiredStages": [
2026-06-22T02:37:07.5695574Z         "impl",
2026-06-22T02:37:07.5695678Z         "unit"
2026-06-22T02:37:07.5695784Z       ],
2026-06-22T02:37:07.5695893Z       "stages": {
2026-06-22T02:37:07.5696002Z         "doc": {
2026-06-22T02:37:07.5696113Z           "complete": false,
2026-06-22T02:37:07.5696217Z           "evidence": []
2026-06-22T02:37:07.5696322Z         },
2026-06-22T02:37:07.5696428Z         "impl": {
2026-06-22T02:37:07.5696541Z           "complete": true,
2026-06-22T02:37:07.5696646Z           "evidence": [
2026-06-22T02:37:07.5696752Z             {
2026-06-22T02:37:07.5696894Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5697010Z               "line": 585
2026-06-22T02:37:07.5697114Z             }
2026-06-22T02:37:07.5697213Z           ]
2026-06-22T02:37:07.5697317Z         },
2026-06-22T02:37:07.5697427Z         "int": {
2026-06-22T02:37:07.5697539Z           "complete": false,
2026-06-22T02:37:07.5697644Z           "evidence": []
2026-06-22T02:37:07.5697754Z         },
2026-06-22T02:37:07.5697854Z         "unit": {
2026-06-22T02:37:07.5698064Z           "complete": true,
2026-06-22T02:37:07.5698173Z           "evidence": [
2026-06-22T02:37:07.5698283Z             {
2026-06-22T02:37:07.5698426Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5698540Z               "line": 1026
2026-06-22T02:37:07.5698651Z             }
2026-06-22T02:37:07.5698750Z           ]
2026-06-22T02:37:07.5698855Z         }
2026-06-22T02:37:07.5699036Z       }
2026-06-22T02:37:07.5699127Z     },
2026-06-22T02:37:07.5699237Z     {
2026-06-22T02:37:07.5699347Z       "id": "REQ-START-5",
2026-06-22T02:37:07.5702150Z       "title": "Adapter-agnostic harness-hosted seed + bind-time adapter/profile resolution (ADR-0021): `api seed` carries only parent_pid + session_id (+ optional cwd), no --adapter — a pure \"a harness session exists at this pid\" record; --adapter becomes an OPTIONAL override across the whole api group (an explicit name[:profile] for adapter dev, never required). Omitted, listen/poll resolve the owning adapter/profile AT BIND as a pure read against the live registry — never a seed-time snapshot that can drift: seed parent_pid → exe basename → host_binaries candidate set (REQ-MANIFEST-8) → active-profile pointer (REQ-INSTALL-12) primary, else greatest-registered_at_ms candidate base profile (name-asc tie) → friendly zero-match error. Covers BOTH LiveAgent (listen) and ReadyAgent (poll) bringup. Restores legacy parity: `$LIVE start <id>` → `$SPT listen <id>` with no mandatory --adapter, one generic SessionStart hook per harness binary. (v0.9.0)",
2026-06-22T02:37:07.5702391Z       "requiredStages": [
2026-06-22T02:37:07.5702496Z         "doc",
2026-06-22T02:37:07.5702609Z         "impl",
2026-06-22T02:37:07.5702722Z         "unit",
2026-06-22T02:37:07.5702837Z         "int"
2026-06-22T02:37:07.5702933Z       ],
2026-06-22T02:37:07.5703032Z       "stages": {
2026-06-22T02:37:07.5703142Z         "doc": {
2026-06-22T02:37:07.5703252Z           "complete": true,
2026-06-22T02:37:07.5703361Z           "evidence": [
2026-06-22T02:37:07.5703472Z             {
2026-06-22T02:37:07.5703595Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.5703695Z               "line": 176
2026-06-22T02:37:07.5703796Z             },
2026-06-22T02:37:07.5703886Z             {
2026-06-22T02:37:07.5704048Z               "path": "docs-site/src/harness-contract/api.md",
2026-06-22T02:37:07.5704163Z               "line": 28
2026-06-22T02:37:07.5704263Z             }
2026-06-22T02:37:07.5704368Z           ]
2026-06-22T02:37:07.5704478Z         },
2026-06-22T02:37:07.5704583Z         "impl": {
2026-06-22T02:37:07.5704703Z           "complete": true,
2026-06-22T02:37:07.5704807Z           "evidence": [
2026-06-22T02:37:07.5704912Z             {
2026-06-22T02:37:07.5705060Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.5705173Z               "line": 26
2026-06-22T02:37:07.5705272Z             },
2026-06-22T02:37:07.5705377Z             {
2026-06-22T02:37:07.5705523Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.5705632Z               "line": 212
2026-06-22T02:37:07.5705738Z             },
2026-06-22T02:37:07.5705838Z             {
2026-06-22T02:37:07.5705986Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.5706095Z               "line": 221
2026-06-22T02:37:07.5706199Z             },
2026-06-22T02:37:07.5706301Z             {
2026-06-22T02:37:07.5706429Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.5706543Z               "line": 485
2026-06-22T02:37:07.5706654Z             },
2026-06-22T02:37:07.5706758Z             {
2026-06-22T02:37:07.5706905Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5707021Z               "line": 36
2026-06-22T02:37:07.5707130Z             },
2026-06-22T02:37:07.5707230Z             {
2026-06-22T02:37:07.5707369Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5707468Z               "line": 118
2026-06-22T02:37:07.5707570Z             },
2026-06-22T02:37:07.5707777Z             {
2026-06-22T02:37:07.5707911Z               "path": "crates/spt/src/api/startup.rs",
2026-06-22T02:37:07.5708019Z               "line": 329
2026-06-22T02:37:07.5708123Z             }
2026-06-22T02:37:07.5708228Z           ]
2026-06-22T02:37:07.5708329Z         },
2026-06-22T02:37:07.5708437Z         "int": {
2026-06-22T02:37:07.5708557Z           "complete": true,
2026-06-22T02:37:07.5708662Z           "evidence": [
2026-06-22T02:37:07.5708766Z             {
2026-06-22T02:37:07.5708920Z               "path": "crates/spt/tests/live_resolve_e2e.rs",
2026-06-22T02:37:07.5709115Z               "line": 17
2026-06-22T02:37:07.5709221Z             }
2026-06-22T02:37:07.5709439Z           ]
2026-06-22T02:37:07.5709545Z         },
2026-06-22T02:37:07.5709649Z         "unit": {
2026-06-22T02:37:07.5709759Z           "complete": true,
2026-06-22T02:37:07.5709870Z           "evidence": [
2026-06-22T02:37:07.5709968Z             {
2026-06-22T02:37:07.5710122Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.5710231Z               "line": 358
2026-06-22T02:37:07.5710340Z             },
2026-06-22T02:37:07.5710442Z             {
2026-06-22T02:37:07.5710588Z               "path": "crates/spt-runtime/src/resolve.rs",
2026-06-22T02:37:07.5710687Z               "line": 371
2026-06-22T02:37:07.5710792Z             },
2026-06-22T02:37:07.5710893Z             {
2026-06-22T02:37:07.5711030Z               "path": "crates/spt/src/api/mod.rs",
2026-06-22T02:37:07.5711136Z               "line": 597
2026-06-22T02:37:07.5711241Z             }
2026-06-22T02:37:07.5711350Z           ]
2026-06-22T02:37:07.5711452Z         }
2026-06-22T02:37:07.5711551Z       }
2026-06-22T02:37:07.5711655Z     },
2026-06-22T02:37:07.5711761Z     {
2026-06-22T02:37:07.5711870Z       "id": "REQ-STORE-1",
2026-06-22T02:37:07.5712753Z       "title": "spt-store::BranchStore (git branch as versioned KV; commit=checkpoint/tip=resume, atomic multi-key, merge-native sync) is the substrate for coarse/durable/audited state (context, registry snapshot+distribution, daemon checkpoint); hot paths (B5 fsync journal) + indexed queries (SQLite spool) excluded (ADR-0011)",
2026-06-22T02:37:07.5712871Z       "requiredStages": [
2026-06-22T02:37:07.5712975Z         "impl",
2026-06-22T02:37:07.5713075Z         "unit"
2026-06-22T02:37:07.5713169Z       ],
2026-06-22T02:37:07.5713273Z       "stages": {
2026-06-22T02:37:07.5713383Z         "doc": {
2026-06-22T02:37:07.5713497Z           "complete": false,
2026-06-22T02:37:07.5713606Z           "evidence": []
2026-06-22T02:37:07.5713717Z         },
2026-06-22T02:37:07.5713808Z         "impl": {
2026-06-22T02:37:07.5713926Z           "complete": true,
2026-06-22T02:37:07.5714042Z           "evidence": [
2026-06-22T02:37:07.5714151Z             {
2026-06-22T02:37:07.5714299Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5714409Z               "line": 23
2026-06-22T02:37:07.5714518Z             },
2026-06-22T02:37:07.5714618Z             {
2026-06-22T02:37:07.5714775Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5714884Z               "line": 46
2026-06-22T02:37:07.5714991Z             },
2026-06-22T02:37:07.5715099Z             {
2026-06-22T02:37:07.5715253Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5715353Z               "line": 97
2026-06-22T02:37:07.5715457Z             },
2026-06-22T02:37:07.5715568Z             {
2026-06-22T02:37:07.5715710Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5715823Z               "line": 125
2026-06-22T02:37:07.5715924Z             },
2026-06-22T02:37:07.5716027Z             {
2026-06-22T02:37:07.5716183Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5716294Z               "line": 207
2026-06-22T02:37:07.5716403Z             },
2026-06-22T02:37:07.5716507Z             {
2026-06-22T02:37:07.5716646Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5716866Z               "line": 231
2026-06-22T02:37:07.5716975Z             },
2026-06-22T02:37:07.5717079Z             {
2026-06-22T02:37:07.5717233Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5717337Z               "line": 467
2026-06-22T02:37:07.5717442Z             },
2026-06-22T02:37:07.5717548Z             {
2026-06-22T02:37:07.5717695Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5717795Z               "line": 25
2026-06-22T02:37:07.5717901Z             },
2026-06-22T02:37:07.5717999Z             {
2026-06-22T02:37:07.5718149Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5718333Z               "line": 120
2026-06-22T02:37:07.5718437Z             },
2026-06-22T02:37:07.5718533Z             {
2026-06-22T02:37:07.5718678Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5718788Z               "line": 148
2026-06-22T02:37:07.5718889Z             },
2026-06-22T02:37:07.5719093Z             {
2026-06-22T02:37:07.5719232Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5719336Z               "line": 165
2026-06-22T02:37:07.5719447Z             },
2026-06-22T02:37:07.5719556Z             {
2026-06-22T02:37:07.5719698Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5719805Z               "line": 180
2026-06-22T02:37:07.5719914Z             },
2026-06-22T02:37:07.5720013Z             {
2026-06-22T02:37:07.5720166Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5720275Z               "line": 198
2026-06-22T02:37:07.5720377Z             },
2026-06-22T02:37:07.5720495Z             {
2026-06-22T02:37:07.5720643Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5720754Z               "line": 207
2026-06-22T02:37:07.5720862Z             },
2026-06-22T02:37:07.5720958Z             {
2026-06-22T02:37:07.5721097Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:37:07.5721209Z               "line": 16
2026-06-22T02:37:07.5721314Z             },
2026-06-22T02:37:07.5721420Z             {
2026-06-22T02:37:07.5721562Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:37:07.5721682Z               "line": 63
2026-06-22T02:37:07.5721787Z             }
2026-06-22T02:37:07.5721891Z           ]
2026-06-22T02:37:07.5721992Z         },
2026-06-22T02:37:07.5722101Z         "int": {
2026-06-22T02:37:07.5722220Z           "complete": false,
2026-06-22T02:37:07.5722331Z           "evidence": []
2026-06-22T02:37:07.5722430Z         },
2026-06-22T02:37:07.5722535Z         "unit": {
2026-06-22T02:37:07.5722646Z           "complete": true,
2026-06-22T02:37:07.5722754Z           "evidence": [
2026-06-22T02:37:07.5722864Z             {
2026-06-22T02:37:07.5723013Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5723116Z               "line": 584
2026-06-22T02:37:07.5723231Z             },
2026-06-22T02:37:07.5723341Z             {
2026-06-22T02:37:07.5723492Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5723597Z               "line": 594
2026-06-22T02:37:07.5723701Z             },
2026-06-22T02:37:07.5723800Z             {
2026-06-22T02:37:07.5723953Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5724067Z               "line": 616
2026-06-22T02:37:07.5724166Z             },
2026-06-22T02:37:07.5724272Z             {
2026-06-22T02:37:07.5724420Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5724525Z               "line": 632
2026-06-22T02:37:07.5724630Z             },
2026-06-22T02:37:07.5724734Z             {
2026-06-22T02:37:07.5724884Z               "path": "crates/spt-store/src/branchstore.rs",
2026-06-22T02:37:07.5724993Z               "line": 690
2026-06-22T02:37:07.5725101Z             },
2026-06-22T02:37:07.5725208Z             {
2026-06-22T02:37:07.5725359Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5725607Z               "line": 472
2026-06-22T02:37:07.5725717Z             },
2026-06-22T02:37:07.5725823Z             {
2026-06-22T02:37:07.5725969Z               "path": "crates/spt-store/src/contextstore.rs",
2026-06-22T02:37:07.5726079Z               "line": 507
2026-06-22T02:37:07.5726181Z             },
2026-06-22T02:37:07.5726289Z             {
2026-06-22T02:37:07.5726421Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:37:07.5726536Z               "line": 120
2026-06-22T02:37:07.5726634Z             },
2026-06-22T02:37:07.5726738Z             {
2026-06-22T02:37:07.5726882Z               "path": "crates/spt-store/src/project.rs",
2026-06-22T02:37:07.5727091Z               "line": 128
2026-06-22T02:37:07.5727202Z             }
2026-06-22T02:37:07.5727292Z           ]
2026-06-22T02:37:07.5727387Z         }
2026-06-22T02:37:07.5727493Z       }
2026-06-22T02:37:07.5727588Z     },
2026-06-22T02:37:07.5727692Z     {
2026-06-22T02:37:07.5727812Z       "id": "REQ-SUBNET-1",
2026-06-22T02:37:07.5728160Z       "title": "spt subnet noun namespace: status view (bare + status [NAME] [--nodes]), create (QR/otpauth), show-code; spt pair deleted",
2026-06-22T02:37:07.5728279Z       "requiredStages": [
2026-06-22T02:37:07.5728380Z         "impl",
2026-06-22T02:37:07.5728489Z         "unit"
2026-06-22T02:37:07.5728594Z       ],
2026-06-22T02:37:07.5728700Z       "stages": {
2026-06-22T02:37:07.5728804Z         "doc": {
2026-06-22T02:37:07.5728921Z           "complete": false,
2026-06-22T02:37:07.5729187Z           "evidence": []
2026-06-22T02:37:07.5729291Z         },
2026-06-22T02:37:07.5729416Z         "impl": {
2026-06-22T02:37:07.5729534Z           "complete": true,
2026-06-22T02:37:07.5729653Z           "evidence": [
2026-06-22T02:37:07.5729754Z             {
2026-06-22T02:37:07.5729910Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5730017Z               "line": 281
2026-06-22T02:37:07.5730116Z             },
2026-06-22T02:37:07.5730235Z             {
2026-06-22T02:37:07.5730374Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5730484Z               "line": 651
2026-06-22T02:37:07.5730583Z             },
2026-06-22T02:37:07.5730694Z             {
2026-06-22T02:37:07.5730822Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5733911Z               "line": 3399
2026-06-22T02:37:07.5734048Z             },
2026-06-22T02:37:07.5734152Z             {
2026-06-22T02:37:07.5734298Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5734402Z               "line": 3709
2026-06-22T02:37:07.5734504Z             },
2026-06-22T02:37:07.5734617Z             {
2026-06-22T02:37:07.5734746Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5734866Z               "line": 3728
2026-06-22T02:37:07.5734966Z             },
2026-06-22T02:37:07.5735075Z             {
2026-06-22T02:37:07.5735204Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5735318Z               "line": 3792
2026-06-22T02:37:07.5735429Z             },
2026-06-22T02:37:07.5735533Z             {
2026-06-22T02:37:07.5735662Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5735768Z               "line": 3834
2026-06-22T02:37:07.5735872Z             },
2026-06-22T02:37:07.5735977Z             {
2026-06-22T02:37:07.5736102Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5736210Z               "line": 4023
2026-06-22T02:37:07.5736315Z             },
2026-06-22T02:37:07.5736417Z             {
2026-06-22T02:37:07.5736544Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5736654Z               "line": 4093
2026-06-22T02:37:07.5736755Z             },
2026-06-22T02:37:07.5736858Z             {
2026-06-22T02:37:07.5736996Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5737100Z               "line": 4317
2026-06-22T02:37:07.5737204Z             },
2026-06-22T02:37:07.5737303Z             {
2026-06-22T02:37:07.5737589Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5737700Z               "line": 4961
2026-06-22T02:37:07.5737805Z             },
2026-06-22T02:37:07.5737908Z             {
2026-06-22T02:37:07.5738043Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.5738153Z               "line": 418
2026-06-22T02:37:07.5738247Z             }
2026-06-22T02:37:07.5738344Z           ]
2026-06-22T02:37:07.5738448Z         },
2026-06-22T02:37:07.5738557Z         "int": {
2026-06-22T02:37:07.5738673Z           "complete": false,
2026-06-22T02:37:07.5738781Z           "evidence": []
2026-06-22T02:37:07.5738886Z         },
2026-06-22T02:37:07.5739317Z         "unit": {
2026-06-22T02:37:07.5739458Z           "complete": true,
2026-06-22T02:37:07.5739562Z           "evidence": [
2026-06-22T02:37:07.5739667Z             {
2026-06-22T02:37:07.5739827Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5739932Z               "line": 1584
2026-06-22T02:37:07.5740048Z             },
2026-06-22T02:37:07.5740151Z             {
2026-06-22T02:37:07.5740281Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5740391Z               "line": 9964
2026-06-22T02:37:07.5740490Z             },
2026-06-22T02:37:07.5740596Z             {
2026-06-22T02:37:07.5740715Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5740833Z               "line": 10134
2026-06-22T02:37:07.5740930Z             },
2026-06-22T02:37:07.5741034Z             {
2026-06-22T02:37:07.5741148Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5741249Z               "line": 10141
2026-06-22T02:37:07.5741358Z             },
2026-06-22T02:37:07.5741463Z             {
2026-06-22T02:37:07.5741588Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5741697Z               "line": 10194
2026-06-22T02:37:07.5741797Z             },
2026-06-22T02:37:07.5741898Z             {
2026-06-22T02:37:07.5742026Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5742141Z               "line": 10211
2026-06-22T02:37:07.5742246Z             },
2026-06-22T02:37:07.5742358Z             {
2026-06-22T02:37:07.5742482Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5742598Z               "line": 10241
2026-06-22T02:37:07.5742696Z             },
2026-06-22T02:37:07.5742793Z             {
2026-06-22T02:37:07.5742912Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5743025Z               "line": 10357
2026-06-22T02:37:07.5743136Z             },
2026-06-22T02:37:07.5743241Z             {
2026-06-22T02:37:07.5743369Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5743480Z               "line": 10508
2026-06-22T02:37:07.5743584Z             }
2026-06-22T02:37:07.5743693Z           ]
2026-06-22T02:37:07.5743795Z         }
2026-06-22T02:37:07.5743898Z       }
2026-06-22T02:37:07.5743998Z     },
2026-06-22T02:37:07.5744095Z     {
2026-06-22T02:37:07.5744212Z       "id": "REQ-SUBNET-2",
2026-06-22T02:37:07.5744490Z       "title": "Guided join e2e: spt subnet join CLI initiator + always-on daemon pairing responder",
2026-06-22T02:37:07.5744613Z       "requiredStages": [
2026-06-22T02:37:07.5744708Z         "impl",
2026-06-22T02:37:07.5744817Z         "unit",
2026-06-22T02:37:07.5744906Z         "int"
2026-06-22T02:37:07.5745016Z       ],
2026-06-22T02:37:07.5745121Z       "stages": {
2026-06-22T02:37:07.5745225Z         "doc": {
2026-06-22T02:37:07.5745340Z           "complete": true,
2026-06-22T02:37:07.5745450Z           "evidence": [
2026-06-22T02:37:07.5745554Z             {
2026-06-22T02:37:07.5745727Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T02:37:07.5745840Z               "line": 60
2026-06-22T02:37:07.5745950Z             }
2026-06-22T02:37:07.5746046Z           ]
2026-06-22T02:37:07.5746155Z         },
2026-06-22T02:37:07.5746260Z         "impl": {
2026-06-22T02:37:07.5746366Z           "complete": true,
2026-06-22T02:37:07.5746461Z           "evidence": [
2026-06-22T02:37:07.5746662Z             {
2026-06-22T02:37:07.5746808Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.5746914Z               "line": 980
2026-06-22T02:37:07.5747024Z             },
2026-06-22T02:37:07.5747123Z             {
2026-06-22T02:37:07.5747272Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.5747381Z               "line": 2000
2026-06-22T02:37:07.5747485Z             },
2026-06-22T02:37:07.5747589Z             {
2026-06-22T02:37:07.5747735Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5747844Z               "line": 633
2026-06-22T02:37:07.5747950Z             },
2026-06-22T02:37:07.5748140Z             {
2026-06-22T02:37:07.5748279Z               "path": "crates/spt-daemon/src/nethost.rs",
2026-06-22T02:37:07.5748384Z               "line": 817
2026-06-22T02:37:07.5748487Z             },
2026-06-22T02:37:07.5748589Z             {
2026-06-22T02:37:07.5748731Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5748842Z               "line": 26
2026-06-22T02:37:07.5749027Z             },
2026-06-22T02:37:07.5749127Z             {
2026-06-22T02:37:07.5749276Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5749380Z               "line": 60
2026-06-22T02:37:07.5749481Z             },
2026-06-22T02:37:07.5749576Z             {
2026-06-22T02:37:07.5749719Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5749829Z               "line": 168
2026-06-22T02:37:07.5749929Z             },
2026-06-22T02:37:07.5750023Z             {
2026-06-22T02:37:07.5750171Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5750283Z               "line": 295
2026-06-22T02:37:07.5750382Z             },
2026-06-22T02:37:07.5750488Z             {
2026-06-22T02:37:07.5750631Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5750730Z               "line": 417
2026-06-22T02:37:07.5750836Z             },
2026-06-22T02:37:07.5750951Z             {
2026-06-22T02:37:07.5751103Z               "path": "crates/spt-net/src/net/pairing/meet.rs",
2026-06-22T02:37:07.5751222Z               "line": 252
2026-06-22T02:37:07.5751317Z             },
2026-06-22T02:37:07.5751423Z             {
2026-06-22T02:37:07.5751556Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5751670Z               "line": 3755
2026-06-22T02:37:07.5751771Z             },
2026-06-22T02:37:07.5751875Z             {
2026-06-22T02:37:07.5752004Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5752114Z               "line": 4256
2026-06-22T02:37:07.5752218Z             },
2026-06-22T02:37:07.5752309Z             {
2026-06-22T02:37:07.5752434Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5752547Z               "line": 4892
2026-06-22T02:37:07.5752653Z             }
2026-06-22T02:37:07.5752758Z           ]
2026-06-22T02:37:07.5752862Z         },
2026-06-22T02:37:07.5752971Z         "int": {
2026-06-22T02:37:07.5753086Z           "complete": true,
2026-06-22T02:37:07.5753195Z           "evidence": [
2026-06-22T02:37:07.5753290Z             {
2026-06-22T02:37:07.5753429Z               "path": "crates/spt-daemon/tests/pairjoin.rs",
2026-06-22T02:37:07.5753543Z               "line": 22
2026-06-22T02:37:07.5753638Z             },
2026-06-22T02:37:07.5753744Z             {
2026-06-22T02:37:07.5753890Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5753997Z               "line": 645
2026-06-22T02:37:07.5754106Z             },
2026-06-22T02:37:07.5754201Z             {
2026-06-22T02:37:07.5754350Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5754453Z               "line": 887
2026-06-22T02:37:07.5754558Z             }
2026-06-22T02:37:07.5754665Z           ]
2026-06-22T02:37:07.5754759Z         },
2026-06-22T02:37:07.5754863Z         "unit": {
2026-06-22T02:37:07.5754970Z           "complete": true,
2026-06-22T02:37:07.5755078Z           "evidence": [
2026-06-22T02:37:07.5755282Z             {
2026-06-22T02:37:07.5755433Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5755541Z               "line": 586
2026-06-22T02:37:07.5755643Z             },
2026-06-22T02:37:07.5755748Z             {
2026-06-22T02:37:07.5755876Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5755991Z               "line": 10004
2026-06-22T02:37:07.5756095Z             },
2026-06-22T02:37:07.5756200Z             {
2026-06-22T02:37:07.5756329Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5756438Z               "line": 10715
2026-06-22T02:37:07.5756544Z             }
2026-06-22T02:37:07.5756734Z           ]
2026-06-22T02:37:07.5756834Z         }
2026-06-22T02:37:07.5756936Z       }
2026-06-22T02:37:07.5757031Z     },
2026-06-22T02:37:07.5757130Z     {
2026-06-22T02:37:07.5757236Z       "id": "REQ-SUBNET-3",
2026-06-22T02:37:07.5757527Z       "title": "Node labels: hostname-default, gossiped, addressable in @node qualifiers (refuse-on-ambiguity)",
2026-06-22T02:37:07.5757644Z       "requiredStages": [
2026-06-22T02:37:07.5757755Z         "impl",
2026-06-22T02:37:07.5757861Z         "unit"
2026-06-22T02:37:07.5757964Z       ],
2026-06-22T02:37:07.5758068Z       "stages": {
2026-06-22T02:37:07.5758164Z         "doc": {
2026-06-22T02:37:07.5758281Z           "complete": false,
2026-06-22T02:37:07.5758381Z           "evidence": []
2026-06-22T02:37:07.5758491Z         },
2026-06-22T02:37:07.5758596Z         "impl": {
2026-06-22T02:37:07.5758705Z           "complete": true,
2026-06-22T02:37:07.5758806Z           "evidence": [
2026-06-22T02:37:07.5758911Z             {
2026-06-22T02:37:07.5759154Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5759263Z               "line": 152
2026-06-22T02:37:07.5759377Z             },
2026-06-22T02:37:07.5759479Z             {
2026-06-22T02:37:07.5759630Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5759740Z               "line": 299
2026-06-22T02:37:07.5759845Z             },
2026-06-22T02:37:07.5759945Z             {
2026-06-22T02:37:07.5760084Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5760193Z               "line": 443
2026-06-22T02:37:07.5760298Z             },
2026-06-22T02:37:07.5760404Z             {
2026-06-22T02:37:07.5760555Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5760668Z               "line": 532
2026-06-22T02:37:07.5760773Z             },
2026-06-22T02:37:07.5760876Z             {
2026-06-22T02:37:07.5761019Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5761130Z               "line": 125
2026-06-22T02:37:07.5761238Z             },
2026-06-22T02:37:07.5761343Z             {
2026-06-22T02:37:07.5761487Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5761600Z               "line": 253
2026-06-22T02:37:07.5761697Z             },
2026-06-22T02:37:07.5761801Z             {
2026-06-22T02:37:07.5761939Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5762045Z               "line": 264
2026-06-22T02:37:07.5762154Z             },
2026-06-22T02:37:07.5762259Z             {
2026-06-22T02:37:07.5762402Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5762512Z               "line": 285
2026-06-22T02:37:07.5762617Z             },
2026-06-22T02:37:07.5762717Z             {
2026-06-22T02:37:07.5762855Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5762961Z               "line": 621
2026-06-22T02:37:07.5763065Z             },
2026-06-22T02:37:07.5763175Z             {
2026-06-22T02:37:07.5763304Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5763412Z               "line": 680
2026-06-22T02:37:07.5763516Z             },
2026-06-22T02:37:07.5763617Z             {
2026-06-22T02:37:07.5763770Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.5764080Z               "line": 61
2026-06-22T02:37:07.5764184Z             },
2026-06-22T02:37:07.5764285Z             {
2026-06-22T02:37:07.5764441Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.5764542Z               "line": 90
2026-06-22T02:37:07.5764643Z             },
2026-06-22T02:37:07.5764738Z             {
2026-06-22T02:37:07.5764881Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.5764995Z               "line": 125
2026-06-22T02:37:07.5765095Z             },
2026-06-22T02:37:07.5765196Z             {
2026-06-22T02:37:07.5765342Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T02:37:07.5765559Z               "line": 9
2026-06-22T02:37:07.5765671Z             },
2026-06-22T02:37:07.5765775Z             {
2026-06-22T02:37:07.5765905Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5766012Z               "line": 4093
2026-06-22T02:37:07.5766107Z             },
2026-06-22T02:37:07.5766218Z             {
2026-06-22T02:37:07.5766350Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.5766465Z               "line": 445
2026-06-22T02:37:07.5766565Z             }
2026-06-22T02:37:07.5766669Z           ]
2026-06-22T02:37:07.5766760Z         },
2026-06-22T02:37:07.5766862Z         "int": {
2026-06-22T02:37:07.5766975Z           "complete": false,
2026-06-22T02:37:07.5767085Z           "evidence": []
2026-06-22T02:37:07.5767190Z         },
2026-06-22T02:37:07.5767295Z         "unit": {
2026-06-22T02:37:07.5767404Z           "complete": true,
2026-06-22T02:37:07.5767505Z           "evidence": [
2026-06-22T02:37:07.5767614Z             {
2026-06-22T02:37:07.5767763Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5767871Z               "line": 1356
2026-06-22T02:37:07.5767981Z             },
2026-06-22T02:37:07.5768082Z             {
2026-06-22T02:37:07.5768224Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5768334Z               "line": 1713
2026-06-22T02:37:07.5768436Z             },
2026-06-22T02:37:07.5768543Z             {
2026-06-22T02:37:07.5768681Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5768795Z               "line": 892
2026-06-22T02:37:07.5768898Z             },
2026-06-22T02:37:07.5769094Z             {
2026-06-22T02:37:07.5769241Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5769361Z               "line": 991
2026-06-22T02:37:07.5769461Z             },
2026-06-22T02:37:07.5769565Z             {
2026-06-22T02:37:07.5769705Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5769819Z               "line": 1041
2026-06-22T02:37:07.5769923Z             },
2026-06-22T02:37:07.5770024Z             {
2026-06-22T02:37:07.5770157Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5770266Z               "line": 1100
2026-06-22T02:37:07.5770368Z             },
2026-06-22T02:37:07.5770471Z             {
2026-06-22T02:37:07.5770616Z               "path": "crates/spt-net/src/net/replicate.rs",
2026-06-22T02:37:07.5770729Z               "line": 234
2026-06-22T02:37:07.5770829Z             },
2026-06-22T02:37:07.5770931Z             {
2026-06-22T02:37:07.5771082Z               "path": "crates/spt-store/src/hostlabel.rs",
2026-06-22T02:37:07.5771181Z               "line": 49
2026-06-22T02:37:07.5771286Z             },
2026-06-22T02:37:07.5771403Z             {
2026-06-22T02:37:07.5771536Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5771651Z               "line": 10357
2026-06-22T02:37:07.5771751Z             },
2026-06-22T02:37:07.5771860Z             {
2026-06-22T02:37:07.5771990Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5772103Z               "line": 10463
2026-06-22T02:37:07.5772199Z             },
2026-06-22T02:37:07.5772309Z             {
2026-06-22T02:37:07.5772442Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5772648Z               "line": 10681
2026-06-22T02:37:07.5772752Z             }
2026-06-22T02:37:07.5772857Z           ]
2026-06-22T02:37:07.5772962Z         }
2026-06-22T02:37:07.5773067Z       }
2026-06-22T02:37:07.5773172Z     },
2026-06-22T02:37:07.5773277Z     {
2026-06-22T02:37:07.5773391Z       "id": "REQ-SUBNET-4",
2026-06-22T02:37:07.5773706Z       "title": "Subnet membership mutations elevation-gated (create = seed reveal; join = trust-boundary enrollment)",
2026-06-22T02:37:07.5773821Z       "requiredStages": [
2026-06-22T02:37:07.5773921Z         "impl",
2026-06-22T02:37:07.5774025Z         "unit"
2026-06-22T02:37:07.5774129Z       ],
2026-06-22T02:37:07.5774344Z       "stages": {
2026-06-22T02:37:07.5774448Z         "doc": {
2026-06-22T02:37:07.5774564Z           "complete": true,
2026-06-22T02:37:07.5774678Z           "evidence": [
2026-06-22T02:37:07.5774783Z             {
2026-06-22T02:37:07.5774969Z               "path": "docs/adr/0005-totp-seeded-spake2-node-pairing.md",
2026-06-22T02:37:07.5775078Z               "line": 60
2026-06-22T02:37:07.5775183Z             }
2026-06-22T02:37:07.5775274Z           ]
2026-06-22T02:37:07.5775378Z         },
2026-06-22T02:37:07.5775484Z         "impl": {
2026-06-22T02:37:07.5775593Z           "complete": true,
2026-06-22T02:37:07.5775698Z           "evidence": [
2026-06-22T02:37:07.5775804Z             {
2026-06-22T02:37:07.5775936Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5776042Z               "line": 3399
2026-06-22T02:37:07.5776147Z             },
2026-06-22T02:37:07.5776241Z             {
2026-06-22T02:37:07.5776369Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5776483Z               "line": 4859
2026-06-22T02:37:07.5776586Z             },
2026-06-22T02:37:07.5776691Z             {
2026-06-22T02:37:07.5776821Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5776934Z               "line": 4892
2026-06-22T02:37:07.5777040Z             }
2026-06-22T02:37:07.5777135Z           ]
2026-06-22T02:37:07.5777234Z         },
2026-06-22T02:37:07.5777340Z         "int": {
2026-06-22T02:37:07.5777454Z           "complete": false,
2026-06-22T02:37:07.5777559Z           "evidence": []
2026-06-22T02:37:07.5777665Z         },
2026-06-22T02:37:07.5777769Z         "unit": {
2026-06-22T02:37:07.5777883Z           "complete": true,
2026-06-22T02:37:07.5777989Z           "evidence": [
2026-06-22T02:37:07.5778098Z             {
2026-06-22T02:37:07.5778226Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5778328Z               "line": 10120
2026-06-22T02:37:07.5778436Z             },
2026-06-22T02:37:07.5778536Z             {
2026-06-22T02:37:07.5778662Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5778774Z               "line": 10194
2026-06-22T02:37:07.5778870Z             }
2026-06-22T02:37:07.5779048Z           ]
2026-06-22T02:37:07.5779151Z         }
2026-06-22T02:37:07.5779260Z       }
2026-06-22T02:37:07.5779379Z     },
2026-06-22T02:37:07.5779496Z     {
2026-06-22T02:37:07.5779601Z       "id": "REQ-SUBNET-5",
2026-06-22T02:37:07.5780779Z       "title": "Per-subnet serve-state: spt subnet detach <NAME> [--save] / attach <NAME> [--save] — daemon keeps running, stops/starts advertising + connecting for that subnet (peer pump + responder selective); --save persists the startup default in daemon config; the all-attached banner gains per-subnet states (M8 decision 6, --save renamed from --auto per decision 25 session)",
2026-06-22T02:37:07.5780904Z       "requiredStages": [
2026-06-22T02:37:07.5781012Z         "impl",
2026-06-22T02:37:07.5781118Z         "unit",
2026-06-22T02:37:07.5781219Z         "int"
2026-06-22T02:37:07.5781327Z       ],
2026-06-22T02:37:07.5781428Z       "stages": {
2026-06-22T02:37:07.5781534Z         "doc": {
2026-06-22T02:37:07.5781642Z           "complete": false,
2026-06-22T02:37:07.5781750Z           "evidence": []
2026-06-22T02:37:07.5781846Z         },
2026-06-22T02:37:07.5781954Z         "impl": {
2026-06-22T02:37:07.5782183Z           "complete": true,
2026-06-22T02:37:07.5782288Z           "evidence": [
2026-06-22T02:37:07.5782392Z             {
2026-06-22T02:37:07.5782536Z               "path": "crates/spt-daemon/src/daemon.rs",
2026-06-22T02:37:07.5782649Z               "line": 128
2026-06-22T02:37:07.5782759Z             },
2026-06-22T02:37:07.5782850Z             {
2026-06-22T02:37:07.5783007Z               "path": "crates/spt-daemon/src/dispatch.rs",
2026-06-22T02:37:07.5783113Z               "line": 413
2026-06-22T02:37:07.5783217Z             },
2026-06-22T02:37:07.5783321Z             {
2026-06-22T02:37:07.5783466Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5783665Z               "line": 74
2026-06-22T02:37:07.5783771Z             },
2026-06-22T02:37:07.5783880Z             {
2026-06-22T02:37:07.5784028Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.5784138Z               "line": 332
2026-06-22T02:37:07.5784242Z             },
2026-06-22T02:37:07.5784353Z             {
2026-06-22T02:37:07.5784500Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.5784599Z               "line": 621
2026-06-22T02:37:07.5784703Z             },
2026-06-22T02:37:07.5784810Z             {
2026-06-22T02:37:07.5784960Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:37:07.5785071Z               "line": 31
2026-06-22T02:37:07.5785176Z             },
2026-06-22T02:37:07.5785280Z             {
2026-06-22T02:37:07.5785424Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:37:07.5785519Z               "line": 50
2026-06-22T02:37:07.5785624Z             },
2026-06-22T02:37:07.5785729Z             {
2026-06-22T02:37:07.5785876Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:37:07.5785982Z               "line": 69
2026-06-22T02:37:07.5786087Z             },
2026-06-22T02:37:07.5786191Z             {
2026-06-22T02:37:07.5786341Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:37:07.5786463Z               "line": 113
2026-06-22T02:37:07.5786563Z             },
2026-06-22T02:37:07.5786669Z             {
2026-06-22T02:37:07.5786825Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:37:07.5786934Z               "line": 25
2026-06-22T02:37:07.5787039Z             },
2026-06-22T02:37:07.5787142Z             {
2026-06-22T02:37:07.5787295Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:37:07.5787405Z               "line": 34
2026-06-22T02:37:07.5787513Z             },
2026-06-22T02:37:07.5787614Z             {
2026-06-22T02:37:07.5787757Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:37:07.5787881Z               "line": 17
2026-06-22T02:37:07.5787972Z             },
2026-06-22T02:37:07.5788081Z             {
2026-06-22T02:37:07.5788205Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5788315Z               "line": 4817
2026-06-22T02:37:07.5788415Z             },
2026-06-22T02:37:07.5788524Z             {
2026-06-22T02:37:07.5788663Z               "path": "crates/spt/src/wansend.rs",
2026-06-22T02:37:07.5788768Z               "line": 419
2026-06-22T02:37:07.5788879Z             }
2026-06-22T02:37:07.5789049Z           ]
2026-06-22T02:37:07.5789159Z         },
2026-06-22T02:37:07.5789260Z         "int": {
2026-06-22T02:37:07.5789368Z           "complete": true,
2026-06-22T02:37:07.5789479Z           "evidence": [
2026-06-22T02:37:07.5789570Z             {
2026-06-22T02:37:07.5789720Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5789825Z               "line": 821
2026-06-22T02:37:07.5789929Z             }
2026-06-22T02:37:07.5790037Z           ]
2026-06-22T02:37:07.5790147Z         },
2026-06-22T02:37:07.5790248Z         "unit": {
2026-06-22T02:37:07.5790361Z           "complete": true,
2026-06-22T02:37:07.5790467Z           "evidence": [
2026-06-22T02:37:07.5790567Z             {
2026-06-22T02:37:07.5790719Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.5790915Z               "line": 341
2026-06-22T02:37:07.5791019Z             },
2026-06-22T02:37:07.5791121Z             {
2026-06-22T02:37:07.5791253Z               "path": "crates/spt-daemon/src/pump/mod.rs",
2026-06-22T02:37:07.5791358Z               "line": 1115
2026-06-22T02:37:07.5791459Z             },
2026-06-22T02:37:07.5791563Z             {
2026-06-22T02:37:07.5791697Z               "path": "crates/spt-daemon/src/serveprobe.rs",
2026-06-22T02:37:07.5791812Z               "line": 151
2026-06-22T02:37:07.5791920Z             },
2026-06-22T02:37:07.5792031Z             {
2026-06-22T02:37:07.5792183Z               "path": "crates/spt-net/src/net/serveprobe.rs",
2026-06-22T02:37:07.5792387Z               "line": 61
2026-06-22T02:37:07.5792487Z             },
2026-06-22T02:37:07.5792585Z             {
2026-06-22T02:37:07.5792738Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:37:07.5792844Z               "line": 111
2026-06-22T02:37:07.5792957Z             },
2026-06-22T02:37:07.5793063Z             {
2026-06-22T02:37:07.5793205Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:37:07.5793319Z               "line": 138
2026-06-22T02:37:07.5793420Z             },
2026-06-22T02:37:07.5793529Z             {
2026-06-22T02:37:07.5793668Z               "path": "crates/spt-store/src/attachment.rs",
2026-06-22T02:37:07.5793772Z               "line": 148
2026-06-22T02:37:07.5793877Z             },
2026-06-22T02:37:07.5793978Z             {
2026-06-22T02:37:07.5794106Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5794216Z               "line": 10021
2026-06-22T02:37:07.5794327Z             }
2026-06-22T02:37:07.5794421Z           ]
2026-06-22T02:37:07.5794525Z         }
2026-06-22T02:37:07.5794627Z       }
2026-06-22T02:37:07.5794726Z     },
2026-06-22T02:37:07.5794826Z     {
2026-06-22T02:37:07.5794937Z       "id": "REQ-SUBNET-6",
2026-06-22T02:37:07.5795660Z       "title": "Trust lifecycle verbs, elevation-gated: spt subnet leave <NAME> (membership exit) and spt subnet prune <node> (removes a dead identity's trust + registry rows, killing its dead dials; trust mutation = security surface, REQ-PAIR-6 gate machinery) (M8 decisions 6-7)",
2026-06-22T02:37:07.5795774Z       "requiredStages": [
2026-06-22T02:37:07.5795874Z         "impl",
2026-06-22T02:37:07.5795984Z         "unit"
2026-06-22T02:37:07.5796084Z       ],
2026-06-22T02:37:07.5796194Z       "stages": {
2026-06-22T02:37:07.5796303Z         "doc": {
2026-06-22T02:37:07.5796418Z           "complete": false,
2026-06-22T02:37:07.5796537Z           "evidence": []
2026-06-22T02:37:07.5796642Z         },
2026-06-22T02:37:07.5796756Z         "impl": {
2026-06-22T02:37:07.5796872Z           "complete": true,
2026-06-22T02:37:07.5796985Z           "evidence": [
2026-06-22T02:37:07.5797095Z             {
2026-06-22T02:37:07.5797244Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5797357Z               "line": 254
2026-06-22T02:37:07.5797465Z             },
2026-06-22T02:37:07.5797570Z             {
2026-06-22T02:37:07.5797702Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5797811Z               "line": 4475
2026-06-22T02:37:07.5797922Z             },
2026-06-22T02:37:07.5798012Z             {
2026-06-22T02:37:07.5798145Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5798256Z               "line": 4492
2026-06-22T02:37:07.5798365Z             },
2026-06-22T02:37:07.5798465Z             {
2026-06-22T02:37:07.5798599Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5798707Z               "line": 4545
2026-06-22T02:37:07.5798805Z             },
2026-06-22T02:37:07.5798913Z             {
2026-06-22T02:37:07.5799114Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5799228Z               "line": 4568
2026-06-22T02:37:07.5799333Z             }
2026-06-22T02:37:07.5799453Z           ]
2026-06-22T02:37:07.5799557Z         },
2026-06-22T02:37:07.5799662Z         "int": {
2026-06-22T02:37:07.5799881Z           "complete": false,
2026-06-22T02:37:07.5799986Z           "evidence": []
2026-06-22T02:37:07.5800083Z         },
2026-06-22T02:37:07.5800186Z         "unit": {
2026-06-22T02:37:07.5800290Z           "complete": true,
2026-06-22T02:37:07.5800414Z           "evidence": [
2026-06-22T02:37:07.5800508Z             {
2026-06-22T02:37:07.5800635Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5800741Z               "line": 10035
2026-06-22T02:37:07.5800846Z             },
2026-06-22T02:37:07.5800950Z             {
2026-06-22T02:37:07.5801080Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5801303Z               "line": 10068
2026-06-22T02:37:07.5801409Z             },
2026-06-22T02:37:07.5801504Z             {
2026-06-22T02:37:07.5801628Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5801743Z               "line": 10077
2026-06-22T02:37:07.5801843Z             }
2026-06-22T02:37:07.5801942Z           ]
2026-06-22T02:37:07.5802048Z         }
2026-06-22T02:37:07.5802146Z       }
2026-06-22T02:37:07.5802252Z     },
2026-06-22T02:37:07.5802353Z     {
2026-06-22T02:37:07.5802475Z       "id": "REQ-SUBNET-7",
2026-06-22T02:37:07.5804094Z       "title": "Per-machine re-pair trust overwrite: registry rows carry a hashed stable machine identifier (OS machine id /etc/machine-id|MachineGuid, domain-separated SHA-256 before gossip, spt-minted persisted UUID fallback; additive serde-default field — old rows parse clean); a COMPLETED pairing ceremony presenting the same node label AND machine id as an existing trusted row evicts the superseded identity's trust + registry rows on the seed-holder and replicates the eviction; a gossiped claim alone never evicts trust (M8 decisions 13, 22)",
2026-06-22T02:37:07.5804238Z       "requiredStages": [
2026-06-22T02:37:07.5804333Z         "impl",
2026-06-22T02:37:07.5804432Z         "unit"
2026-06-22T02:37:07.5804538Z       ],
2026-06-22T02:37:07.5804648Z       "stages": {
2026-06-22T02:37:07.5804756Z         "doc": {
2026-06-22T02:37:07.5804872Z           "complete": false,
2026-06-22T02:37:07.5804976Z           "evidence": []
2026-06-22T02:37:07.5805081Z         },
2026-06-22T02:37:07.5805187Z         "impl": {
2026-06-22T02:37:07.5805301Z           "complete": true,
2026-06-22T02:37:07.5805410Z           "evidence": [
2026-06-22T02:37:07.5805516Z             {
2026-06-22T02:37:07.5805662Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:37:07.5805771Z               "line": 17
2026-06-22T02:37:07.5805877Z             },
2026-06-22T02:37:07.5805977Z             {
2026-06-22T02:37:07.5806129Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5806249Z               "line": 103
2026-06-22T02:37:07.5806348Z             },
2026-06-22T02:37:07.5806449Z             {
2026-06-22T02:37:07.5806653Z               "path": "crates/spt-daemon/src/pairhost.rs",
2026-06-22T02:37:07.5806812Z               "line": 312
2026-06-22T02:37:07.5806945Z             },
2026-06-22T02:37:07.5807098Z             {
2026-06-22T02:37:07.5807321Z               "path": "crates/spt-daemon/src/pump/registry.rs",
2026-06-22T02:37:07.5807494Z               "line": 131
2026-06-22T02:37:07.5807640Z             },
2026-06-22T02:37:07.5807795Z             {
2026-06-22T02:37:07.5808021Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5808163Z               "line": 160
2026-06-22T02:37:07.5808309Z             },
2026-06-22T02:37:07.5808468Z             {
2026-06-22T02:37:07.5808705Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5808891Z               "line": 447
2026-06-22T02:37:07.5809135Z             },
2026-06-22T02:37:07.5809286Z             {
2026-06-22T02:37:07.5809535Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5809722Z               "line": 670
2026-06-22T02:37:07.5809859Z             },
2026-06-22T02:37:07.5810004Z             {
2026-06-22T02:37:07.5810236Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5810599Z               "line": 710
2026-06-22T02:37:07.5810765Z             },
2026-06-22T02:37:07.5810921Z             {
2026-06-22T02:37:07.5811144Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5811306Z               "line": 766
2026-06-22T02:37:07.5811449Z             },
2026-06-22T02:37:07.5811607Z             {
2026-06-22T02:37:07.5811839Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5811997Z               "line": 136
2026-06-22T02:37:07.5812149Z             },
2026-06-22T02:37:07.5812288Z             {
2026-06-22T02:37:07.5812760Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5812913Z               "line": 139
2026-06-22T02:37:07.5813060Z             }
2026-06-22T02:37:07.5813223Z           ]
2026-06-22T02:37:07.5813383Z         },
2026-06-22T02:37:07.5813531Z         "int": {
2026-06-22T02:37:07.5813700Z           "complete": false,
2026-06-22T02:37:07.5813892Z           "evidence": []
2026-06-22T02:37:07.5814034Z         },
2026-06-22T02:37:07.5814197Z         "unit": {
2026-06-22T02:37:07.5814367Z           "complete": true,
2026-06-22T02:37:07.5814526Z           "evidence": [
2026-06-22T02:37:07.5814692Z             {
2026-06-22T02:37:07.5814902Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:37:07.5815083Z               "line": 136
2026-06-22T02:37:07.5815260Z             },
2026-06-22T02:37:07.5815442Z             {
2026-06-22T02:37:07.5815694Z               "path": "crates/spt-daemon/src/machineid.rs",
2026-06-22T02:37:07.5815880Z               "line": 156
2026-06-22T02:37:07.5816077Z             },
2026-06-22T02:37:07.5816250Z             {
2026-06-22T02:37:07.5816519Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5816670Z               "line": 987
2026-06-22T02:37:07.5820931Z             },
2026-06-22T02:37:07.5821087Z             {
2026-06-22T02:37:07.5821297Z               "path": "crates/spt-daemon/src/registryhost.rs",
2026-06-22T02:37:07.5821429Z               "line": 1009
2026-06-22T02:37:07.5821534Z             },
2026-06-22T02:37:07.5821633Z             {
2026-06-22T02:37:07.5821784Z               "path": "crates/spt-net/src/net/pairing/wire.rs",
2026-06-22T02:37:07.5821909Z               "line": 1419
2026-06-22T02:37:07.5822009Z             },
2026-06-22T02:37:07.5822113Z             {
2026-06-22T02:37:07.5822262Z               "path": "crates/spt-net/src/net/registry.rs",
2026-06-22T02:37:07.5822371Z               "line": 1036
2026-06-22T02:37:07.5822477Z             }
2026-06-22T02:37:07.5822581Z           ]
2026-06-22T02:37:07.5822700Z         }
2026-06-22T02:37:07.5822801Z       }
2026-06-22T02:37:07.5822910Z     },
2026-06-22T02:37:07.5823005Z     {
2026-06-22T02:37:07.5823111Z       "id": "REQ-SUBNET-8",
2026-06-22T02:37:07.5824332Z       "title": "Status render honesty: zero-subnet text is daemon-aware ('No subnets registered — this node is standalone.' + daemon-running-dependent blurb, never implying messaging works while the daemon is down); hint footer prints on bare spt subnet only (status drops it); a stalled pump is surfaced in subnet status, never rendered implied-healthy (M8 decisions 11-12, 23)",
2026-06-22T02:37:07.5824472Z       "requiredStages": [
2026-06-22T02:37:07.5824576Z         "impl",
2026-06-22T02:37:07.5824671Z         "unit"
2026-06-22T02:37:07.5824786Z       ],
2026-06-22T02:37:07.5824886Z       "stages": {
2026-06-22T02:37:07.5824985Z         "doc": {
2026-06-22T02:37:07.5825105Z           "complete": false,
2026-06-22T02:37:07.5825210Z           "evidence": []
2026-06-22T02:37:07.5825329Z         },
2026-06-22T02:37:07.5825439Z         "impl": {
2026-06-22T02:37:07.5825558Z           "complete": true,
2026-06-22T02:37:07.5825658Z           "evidence": [
2026-06-22T02:37:07.5825758Z             {
2026-06-22T02:37:07.5825891Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5826002Z               "line": 3835
2026-06-22T02:37:07.5826288Z             },
2026-06-22T02:37:07.5826412Z             {
2026-06-22T02:37:07.5826559Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5826684Z               "line": 3864
2026-06-22T02:37:07.5826797Z             },
2026-06-22T02:37:07.5826906Z             {
2026-06-22T02:37:07.5827045Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5827173Z               "line": 3881
2026-06-22T02:37:07.5827278Z             },
2026-06-22T02:37:07.5827383Z             {
2026-06-22T02:37:07.5827511Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5827617Z               "line": 3904
2026-06-22T02:37:07.5827826Z             },
2026-06-22T02:37:07.5827927Z             {
2026-06-22T02:37:07.5828060Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5828170Z               "line": 4318
2026-06-22T02:37:07.5828271Z             }
2026-06-22T02:37:07.5828370Z           ]
2026-06-22T02:37:07.5828470Z         },
2026-06-22T02:37:07.5828581Z         "int": {
2026-06-22T02:37:07.5828689Z           "complete": false,
2026-06-22T02:37:07.5828799Z           "evidence": []
2026-06-22T02:37:07.5828905Z         },
2026-06-22T02:37:07.5829145Z         "unit": {
2026-06-22T02:37:07.5829256Z           "complete": true,
2026-06-22T02:37:07.5829368Z           "evidence": [
2026-06-22T02:37:07.5829472Z             {
2026-06-22T02:37:07.5829597Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5829706Z               "line": 10225
2026-06-22T02:37:07.5829802Z             },
2026-06-22T02:37:07.5829902Z             {
2026-06-22T02:37:07.5830025Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5830136Z               "line": 10241
2026-06-22T02:37:07.5830241Z             }
2026-06-22T02:37:07.5830345Z           ]
2026-06-22T02:37:07.5830451Z         }
2026-06-22T02:37:07.5830555Z       }
2026-06-22T02:37:07.5830655Z     },
2026-06-22T02:37:07.5830760Z     {
2026-06-22T02:37:07.5830880Z       "id": "REQ-TERM-1",
2026-06-22T02:37:07.5831095Z       "title": "Process-supervisor terminal wrapper hosting broker PTYs",
2026-06-22T02:37:07.5831209Z       "requiredStages": [
2026-06-22T02:37:07.5831323Z         "impl",
2026-06-22T02:37:07.5831419Z         "unit"
2026-06-22T02:37:07.5831524Z       ],
2026-06-22T02:37:07.5831628Z       "stages": {
2026-06-22T02:37:07.5831730Z         "doc": {
2026-06-22T02:37:07.5831848Z           "complete": false,
2026-06-22T02:37:07.5831961Z           "evidence": []
2026-06-22T02:37:07.5832065Z         },
2026-06-22T02:37:07.5832174Z         "impl": {
2026-06-22T02:37:07.5832278Z           "complete": true,
2026-06-22T02:37:07.5832387Z           "evidence": [
2026-06-22T02:37:07.5832493Z             {
2026-06-22T02:37:07.5832640Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:37:07.5832746Z               "line": 59
2026-06-22T02:37:07.5832846Z             },
2026-06-22T02:37:07.5832955Z             {
2026-06-22T02:37:07.5833080Z               "path": "crates/spt-term/src/pty.rs",
2026-06-22T02:37:07.5833194Z               "line": 234
2026-06-22T02:37:07.5833298Z             },
2026-06-22T02:37:07.5833409Z             {
2026-06-22T02:37:07.5833551Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:37:07.5833661Z               "line": 100
2026-06-22T02:37:07.5833766Z             }
2026-06-22T02:37:07.5833870Z           ]
2026-06-22T02:37:07.5833971Z         },
2026-06-22T02:37:07.5834072Z         "int": {
2026-06-22T02:37:07.5834180Z           "complete": false,
2026-06-22T02:37:07.5834291Z           "evidence": []
2026-06-22T02:37:07.5834396Z         },
2026-06-22T02:37:07.5834504Z         "unit": {
2026-06-22T02:37:07.5834618Z           "complete": true,
2026-06-22T02:37:07.5834732Z           "evidence": [
2026-06-22T02:37:07.5834826Z             {
2026-06-22T02:37:07.5834974Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:37:07.5835084Z               "line": 24
2026-06-22T02:37:07.5835192Z             },
2026-06-22T02:37:07.5835298Z             {
2026-06-22T02:37:07.5835545Z               "path": "crates/spt-term/tests/surface.rs",
2026-06-22T02:37:07.5835656Z               "line": 56
2026-06-22T02:37:07.5835751Z             }
2026-06-22T02:37:07.5835860Z           ]
2026-06-22T02:37:07.5835966Z         }
2026-06-22T02:37:07.5836070Z       }
2026-06-22T02:37:07.5836175Z     },
2026-06-22T02:37:07.5836271Z     {
2026-06-22T02:37:07.5836390Z       "id": "REQ-TERM-2",
2026-06-22T02:37:07.5836591Z       "title": "session-surface abstraction; send-keys + send-line injection",
2026-06-22T02:37:07.5836709Z       "requiredStages": [
2026-06-22T02:37:07.5836809Z         "impl",
2026-06-22T02:37:07.5836920Z         "unit"
2026-06-22T02:37:07.5837119Z       ],
2026-06-22T02:37:07.5837225Z       "stages": {
2026-06-22T02:37:07.5837329Z         "doc": {
2026-06-22T02:37:07.5837442Z           "complete": false,
2026-06-22T02:37:07.5837562Z           "evidence": []
2026-06-22T02:37:07.5837653Z         },
2026-06-22T02:37:07.5837761Z         "impl": {
2026-06-22T02:37:07.5837906Z           "complete": true,
2026-06-22T02:37:07.5838024Z           "evidence": [
2026-06-22T02:37:07.5838149Z             {
2026-06-22T02:37:07.5838287Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:37:07.5838405Z               "line": 117
2026-06-22T02:37:07.5838506Z             },
2026-06-22T02:37:07.5838610Z             {
2026-06-22T02:37:07.5838749Z               "path": "crates/spt-term/src/surface.rs",
2026-06-22T02:37:07.5838864Z               "line": 127
2026-06-22T02:37:07.5839146Z             }
2026-06-22T02:37:07.5839249Z           ]
2026-06-22T02:37:07.5839359Z         },
2026-06-22T02:37:07.5839470Z         "int": {
2026-06-22T02:37:07.5839606Z           "complete": false,
2026-06-22T02:37:07.5839720Z           "evidence": []
2026-06-22T02:37:07.5839821Z         },
2026-06-22T02:37:07.5839919Z         "unit": {
2026-06-22T02:37:07.5840067Z           "complete": true,
2026-06-22T02:37:07.5840192Z           "evidence": [
2026-06-22T02:37:07.5840295Z             {
2026-06-22T02:37:07.5840444Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T02:37:07.5840572Z               "line": 46
2026-06-22T02:37:07.5840686Z             },
2026-06-22T02:37:07.5840792Z             {
2026-06-22T02:37:07.5840929Z               "path": "crates/spt-term/tests/inject.rs",
2026-06-22T02:37:07.5841030Z               "line": 77
2026-06-22T02:37:07.5841139Z             }
2026-06-22T02:37:07.5841243Z           ]
2026-06-22T02:37:07.5841345Z         }
2026-06-22T02:37:07.5841449Z       }
2026-06-22T02:37:07.5841554Z     },
2026-06-22T02:37:07.5841650Z     {
2026-06-22T02:37:07.5841769Z       "id": "REQ-TERM-3",
2026-06-22T02:37:07.5841940Z       "title": "Byte-stream remote terminal streaming for v1",
2026-06-22T02:37:07.5842056Z       "requiredStages": [
2026-06-22T02:37:07.5842164Z         "impl",
2026-06-22T02:37:07.5842260Z         "unit"
2026-06-22T02:37:07.5842366Z       ],
2026-06-22T02:37:07.5842469Z       "stages": {
2026-06-22T02:37:07.5842577Z         "doc": {
2026-06-22T02:37:07.5842693Z           "complete": false,
2026-06-22T02:37:07.5842805Z           "evidence": []
2026-06-22T02:37:07.5842904Z         },
2026-06-22T02:37:07.5843010Z         "impl": {
2026-06-22T02:37:07.5843134Z           "complete": true,
2026-06-22T02:37:07.5843238Z           "evidence": [
2026-06-22T02:37:07.5843330Z             {
2026-06-22T02:37:07.5843477Z               "path": "crates/spt-term/src/stream.rs",
2026-06-22T02:37:07.5843587Z               "line": 71
2026-06-22T02:37:07.5843692Z             }
2026-06-22T02:37:07.5843796Z           ]
2026-06-22T02:37:07.5843897Z         },
2026-06-22T02:37:07.5844002Z         "int": {
2026-06-22T02:37:07.5844121Z           "complete": false,
2026-06-22T02:37:07.5844222Z           "evidence": []
2026-06-22T02:37:07.5844331Z         },
2026-06-22T02:37:07.5844440Z         "unit": {
2026-06-22T02:37:07.5844546Z           "complete": true,
2026-06-22T02:37:07.5844660Z           "evidence": [
2026-06-22T02:37:07.5844750Z             {
2026-06-22T02:37:07.5845026Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T02:37:07.5845130Z               "line": 37
2026-06-22T02:37:07.5845236Z             },
2026-06-22T02:37:07.5845343Z             {
2026-06-22T02:37:07.5845491Z               "path": "crates/spt-term/tests/stream.rs",
2026-06-22T02:37:07.5845592Z               "line": 67
2026-06-22T02:37:07.5845691Z             }
2026-06-22T02:37:07.5845791Z           ]
2026-06-22T02:37:07.5845892Z         }
2026-06-22T02:37:07.5845992Z       }
2026-06-22T02:37:07.5846091Z     },
2026-06-22T02:37:07.5846192Z     {
2026-06-22T02:37:07.5846321Z       "id": "REQ-TERM-4",
2026-06-22T02:37:07.5846936Z       "title": "Live activity buffer (session digest): projection of normalized session logs, snapshot-pull (spt endpoint digest) + structured-delta-stream contract + api digest-entry push",
2026-06-22T02:37:07.5847054Z       "requiredStages": [
2026-06-22T02:37:07.5847160Z         "impl",
2026-06-22T02:37:07.5847264Z         "unit",
2026-06-22T02:37:07.5847364Z         "int"
2026-06-22T02:37:07.5847466Z       ],
2026-06-22T02:37:07.5847574Z       "stages": {
2026-06-22T02:37:07.5847675Z         "doc": {
2026-06-22T02:37:07.5847790Z           "complete": false,
2026-06-22T02:37:07.5847903Z           "evidence": []
2026-06-22T02:37:07.5847997Z         },
2026-06-22T02:37:07.5848108Z         "impl": {
2026-06-22T02:37:07.5848222Z           "complete": true,
2026-06-22T02:37:07.5848326Z           "evidence": [
2026-06-22T02:37:07.5848427Z             {
2026-06-22T02:37:07.5848570Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5848680Z               "line": 37
2026-06-22T02:37:07.5848781Z             },
2026-06-22T02:37:07.5848890Z             {
2026-06-22T02:37:07.5849143Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5849252Z               "line": 25
2026-06-22T02:37:07.5849358Z             },
2026-06-22T02:37:07.5849481Z             {
2026-06-22T02:37:07.5849629Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5849744Z               "line": 114
2026-06-22T02:37:07.5849847Z             },
2026-06-22T02:37:07.5849953Z             {
2026-06-22T02:37:07.5850092Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5850200Z               "line": 267
2026-06-22T02:37:07.5850309Z             },
2026-06-22T02:37:07.5850404Z             {
2026-06-22T02:37:07.5850545Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5850655Z               "line": 289
2026-06-22T02:37:07.5850761Z             },
2026-06-22T02:37:07.5850860Z             {
2026-06-22T02:37:07.5850999Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5851113Z               "line": 307
2026-06-22T02:37:07.5851217Z             },
2026-06-22T02:37:07.5851319Z             {
2026-06-22T02:37:07.5851456Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:37:07.5851561Z               "line": 33
2026-06-22T02:37:07.5851671Z             },
2026-06-22T02:37:07.5851762Z             {
2026-06-22T02:37:07.5851900Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5852000Z               "line": 52
2026-06-22T02:37:07.5852100Z             },
2026-06-22T02:37:07.5852200Z             {
2026-06-22T02:37:07.5852343Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5852443Z               "line": 180
2026-06-22T02:37:07.5852545Z             },
2026-06-22T02:37:07.5852649Z             {
2026-06-22T02:37:07.5852796Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5852897Z               "line": 190
2026-06-22T02:37:07.5853010Z             },
2026-06-22T02:37:07.5853110Z             {
2026-06-22T02:37:07.5853248Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5853355Z               "line": 250
2026-06-22T02:37:07.5853460Z             },
2026-06-22T02:37:07.5853566Z             {
2026-06-22T02:37:07.5853808Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5853923Z               "line": 284
2026-06-22T02:37:07.5854022Z             },
2026-06-22T02:37:07.5854123Z             {
2026-06-22T02:37:07.5854261Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5854366Z               "line": 295
2026-06-22T02:37:07.5854472Z             },
2026-06-22T02:37:07.5854571Z             {
2026-06-22T02:37:07.5854705Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5854811Z               "line": 1193
2026-06-22T02:37:07.5854914Z             }
2026-06-22T02:37:07.5855019Z           ]
2026-06-22T02:37:07.5855121Z         },
2026-06-22T02:37:07.5855315Z         "int": {
2026-06-22T02:37:07.5855426Z           "complete": true,
2026-06-22T02:37:07.5855539Z           "evidence": [
2026-06-22T02:37:07.5855639Z             {
2026-06-22T02:37:07.5855777Z               "path": "crates/spt-daemon/tests/digest.rs",
2026-06-22T02:37:07.5855884Z               "line": 18
2026-06-22T02:37:07.5855989Z             }
2026-06-22T02:37:07.5856084Z           ]
2026-06-22T02:37:07.5856185Z         },
2026-06-22T02:37:07.5856299Z         "unit": {
2026-06-22T02:37:07.5856409Z           "complete": true,
2026-06-22T02:37:07.5856519Z           "evidence": [
2026-06-22T02:37:07.5856623Z             {
2026-06-22T02:37:07.5856767Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5856876Z               "line": 364
2026-06-22T02:37:07.5856980Z             },
2026-06-22T02:37:07.5857082Z             {
2026-06-22T02:37:07.5857219Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5857324Z               "line": 416
2026-06-22T02:37:07.5857424Z             },
2026-06-22T02:37:07.5857524Z             {
2026-06-22T02:37:07.5857668Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5857767Z               "line": 426
2026-06-22T02:37:07.5857868Z             },
2026-06-22T02:37:07.5857973Z             {
2026-06-22T02:37:07.5858129Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5858235Z               "line": 436
2026-06-22T02:37:07.5858327Z             },
2026-06-22T02:37:07.5858430Z             {
2026-06-22T02:37:07.5858572Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5858687Z               "line": 456
2026-06-22T02:37:07.5858787Z             },
2026-06-22T02:37:07.5858896Z             {
2026-06-22T02:37:07.5859159Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5859264Z               "line": 478
2026-06-22T02:37:07.5859369Z             },
2026-06-22T02:37:07.5859464Z             {
2026-06-22T02:37:07.5859622Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5859731Z               "line": 491
2026-06-22T02:37:07.5859840Z             },
2026-06-22T02:37:07.5859942Z             {
2026-06-22T02:37:07.5860079Z               "path": "crates/spt-daemon/src/digesthub.rs",
2026-06-22T02:37:07.5860194Z               "line": 502
2026-06-22T02:37:07.5860294Z             },
2026-06-22T02:37:07.5860403Z             {
2026-06-22T02:37:07.5860528Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:37:07.5860652Z               "line": 108
2026-06-22T02:37:07.5860750Z             },
2026-06-22T02:37:07.5860850Z             {
2026-06-22T02:37:07.5860992Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:37:07.5861101Z               "line": 119
2026-06-22T02:37:07.5861206Z             },
2026-06-22T02:37:07.5861312Z             {
2026-06-22T02:37:07.5861444Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:37:07.5861564Z               "line": 127
2026-06-22T02:37:07.5861668Z             },
2026-06-22T02:37:07.5861777Z             {
2026-06-22T02:37:07.5861922Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5862016Z               "line": 474
2026-06-22T02:37:07.5862121Z             },
2026-06-22T02:37:07.5862222Z             {
2026-06-22T02:37:07.5862480Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5862589Z               "line": 501
2026-06-22T02:37:07.5862684Z             },
2026-06-22T02:37:07.5862790Z             {
2026-06-22T02:37:07.5862936Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5863046Z               "line": 520
2026-06-22T02:37:07.5863152Z             },
2026-06-22T02:37:07.5863260Z             {
2026-06-22T02:37:07.5863405Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5863510Z               "line": 535
2026-06-22T02:37:07.5863603Z             },
2026-06-22T02:37:07.5863803Z             {
2026-06-22T02:37:07.5863953Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5864054Z               "line": 561
2026-06-22T02:37:07.5864159Z             },
2026-06-22T02:37:07.5864259Z             {
2026-06-22T02:37:07.5864402Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5864512Z               "line": 581
2026-06-22T02:37:07.5864616Z             },
2026-06-22T02:37:07.5864722Z             {
2026-06-22T02:37:07.5864856Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5864969Z               "line": 591
2026-06-22T02:37:07.5865075Z             },
2026-06-22T02:37:07.5865179Z             {
2026-06-22T02:37:07.5865317Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5865423Z               "line": 683
2026-06-22T02:37:07.5865522Z             },
2026-06-22T02:37:07.5865618Z             {
2026-06-22T02:37:07.5865752Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5865861Z               "line": 885
2026-06-22T02:37:07.5865967Z             },
2026-06-22T02:37:07.5866072Z             {
2026-06-22T02:37:07.5866203Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5866317Z               "line": 9792
2026-06-22T02:37:07.5866417Z             }
2026-06-22T02:37:07.5866525Z           ]
2026-06-22T02:37:07.5866630Z         }
2026-06-22T02:37:07.5866736Z       }
2026-06-22T02:37:07.5866835Z     },
2026-06-22T02:37:07.5866945Z     {
2026-06-22T02:37:07.5867064Z       "id": "REQ-TERM-5",
2026-06-22T02:37:07.5868619Z       "title": "Adapter-declared digest extractor seam: a `[digest]` manifest section declaring an imperative extractor (native harness log -> the {role,text,tool,ts} contract; defaults to the [history] source files with an own-source escape hatch), `api digest-entry` push fallback, register-time validation of the section, adapter-declared presentation defaults (window depth, arg-truncation, sprint-collapse) that any consumer may override, and a `spt adapter digest-proof` author tool plus runtime skip-diagnostics (no silent drop). Reverses M9's no-manifest-seam stance; no declarative DSL.",
2026-06-22T02:37:07.5868747Z       "requiredStages": [
2026-06-22T02:37:07.5868858Z         "doc",
2026-06-22T02:37:07.5869061Z         "impl",
2026-06-22T02:37:07.5869185Z         "unit",
2026-06-22T02:37:07.5869281Z         "int"
2026-06-22T02:37:07.5869390Z       ],
2026-06-22T02:37:07.5869495Z       "stages": {
2026-06-22T02:37:07.5869600Z         "doc": {
2026-06-22T02:37:07.5869714Z           "complete": true,
2026-06-22T02:37:07.5869819Z           "evidence": [
2026-06-22T02:37:07.5869924Z             {
2026-06-22T02:37:07.5870048Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.5870168Z               "line": 234
2026-06-22T02:37:07.5870268Z             }
2026-06-22T02:37:07.5870367Z           ]
2026-06-22T02:37:07.5870468Z         },
2026-06-22T02:37:07.5870573Z         "impl": {
2026-06-22T02:37:07.5870692Z           "complete": true,
2026-06-22T02:37:07.5870807Z           "evidence": [
2026-06-22T02:37:07.5870906Z             {
2026-06-22T02:37:07.5871059Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5871174Z               "line": 75
2026-06-22T02:37:07.5871278Z             },
2026-06-22T02:37:07.5871382Z             {
2026-06-22T02:37:07.5871642Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5871752Z               "line": 131
2026-06-22T02:37:07.5871848Z             },
2026-06-22T02:37:07.5871952Z             {
2026-06-22T02:37:07.5872086Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.5872200Z               "line": 22
2026-06-22T02:37:07.5872304Z             },
2026-06-22T02:37:07.5872415Z             {
2026-06-22T02:37:07.5872553Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.5872662Z               "line": 87
2026-06-22T02:37:07.5872773Z             },
2026-06-22T02:37:07.5872882Z             {
2026-06-22T02:37:07.5873130Z               "path": "crates/spt-term/src/digest.rs",
2026-06-22T02:37:07.5873244Z               "line": 30
2026-06-22T02:37:07.5873345Z             },
2026-06-22T02:37:07.5873440Z             {
2026-06-22T02:37:07.5873596Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5873703Z               "line": 103
2026-06-22T02:37:07.5873821Z             },
2026-06-22T02:37:07.5873926Z             {
2026-06-22T02:37:07.5874070Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5874178Z               "line": 167
2026-06-22T02:37:07.5874282Z             },
2026-06-22T02:37:07.5874382Z             {
2026-06-22T02:37:07.5874513Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5874633Z               "line": 434
2026-06-22T02:37:07.5874738Z             },
2026-06-22T02:37:07.5874838Z             {
2026-06-22T02:37:07.5874967Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5875072Z               "line": 5650
2026-06-22T02:37:07.5875185Z             },
2026-06-22T02:37:07.5875282Z             {
2026-06-22T02:37:07.5875396Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5875510Z               "line": 5957
2026-06-22T02:37:07.5875611Z             }
2026-06-22T02:37:07.5875720Z           ]
2026-06-22T02:37:07.5875820Z         },
2026-06-22T02:37:07.5875926Z         "int": {
2026-06-22T02:37:07.5876030Z           "complete": true,
2026-06-22T02:37:07.5876144Z           "evidence": [
2026-06-22T02:37:07.5876250Z             {
2026-06-22T02:37:07.5876426Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:37:07.5876537Z               "line": 17
2026-06-22T02:37:07.5876637Z             }
2026-06-22T02:37:07.5876749Z           ]
2026-06-22T02:37:07.5876854Z         },
2026-06-22T02:37:07.5876959Z         "unit": {
2026-06-22T02:37:07.5877071Z           "complete": true,
2026-06-22T02:37:07.5877181Z           "evidence": [
2026-06-22T02:37:07.5877291Z             {
2026-06-22T02:37:07.5877438Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5877544Z               "line": 375
2026-06-22T02:37:07.5877649Z             },
2026-06-22T02:37:07.5877743Z             {
2026-06-22T02:37:07.5877883Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.5878001Z               "line": 162
2026-06-22T02:37:07.5878110Z             },
2026-06-22T02:37:07.5878212Z             {
2026-06-22T02:37:07.5878339Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.5878449Z               "line": 179
2026-06-22T02:37:07.5878555Z             },
2026-06-22T02:37:07.5878663Z             {
2026-06-22T02:37:07.5878798Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.5878911Z               "line": 201
2026-06-22T02:37:07.5879108Z             },
2026-06-22T02:37:07.5879212Z             {
2026-06-22T02:37:07.5879355Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.5879461Z               "line": 212
2026-06-22T02:37:07.5879564Z             },
2026-06-22T02:37:07.5879669Z             {
2026-06-22T02:37:07.5879807Z               "path": "crates/spt-live/src/digest.rs",
2026-06-22T02:37:07.5879912Z               "line": 223
2026-06-22T02:37:07.5880021Z             },
2026-06-22T02:37:07.5880127Z             {
2026-06-22T02:37:07.5880399Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5880513Z               "line": 1525
2026-06-22T02:37:07.5880612Z             },
2026-06-22T02:37:07.5880718Z             {
2026-06-22T02:37:07.5880861Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5880970Z               "line": 1568
2026-06-22T02:37:07.5881077Z             },
2026-06-22T02:37:07.5881171Z             {
2026-06-22T02:37:07.5881319Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5881429Z               "line": 606
2026-06-22T02:37:07.5881533Z             },
2026-06-22T02:37:07.5881633Z             {
2026-06-22T02:37:07.5881889Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5882004Z               "line": 634
2026-06-22T02:37:07.5882103Z             },
2026-06-22T02:37:07.5882207Z             {
2026-06-22T02:37:07.5882355Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5882469Z               "line": 646
2026-06-22T02:37:07.5882573Z             },
2026-06-22T02:37:07.5882684Z             {
2026-06-22T02:37:07.5882822Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5882927Z               "line": 669
2026-06-22T02:37:07.5883037Z             },
2026-06-22T02:37:07.5883136Z             {
2026-06-22T02:37:07.5883266Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5883375Z               "line": 8503
2026-06-22T02:37:07.5883480Z             },
2026-06-22T02:37:07.5883580Z             {
2026-06-22T02:37:07.5883709Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5883819Z               "line": 8561
2026-06-22T02:37:07.5883920Z             }
2026-06-22T02:37:07.5884028Z           ]
2026-06-22T02:37:07.5884133Z         }
2026-06-22T02:37:07.5884230Z       }
2026-06-22T02:37:07.5884334Z     },
2026-06-22T02:37:07.5884434Z     {
2026-06-22T02:37:07.5884544Z       "id": "REQ-TERM-6",
2026-06-22T02:37:07.5885755Z       "title": "Thread-spanning digest across session boundaries: a per-endpoint session ledger (`<perch>/sessions.log`) appended at first bind and by `api boundary` on `/clear`|`/compact` session rotation, the digest enumerating the last K sessions so its rolling window bridges a boundary, and a distinctive in-timeline boundary marker (DigestEntry::Boundary). The digest follows the live-agent thread, not a single session.",
2026-06-22T02:37:07.5885871Z       "requiredStages": [
2026-06-22T02:37:07.5885981Z         "impl",
2026-06-22T02:37:07.5886084Z         "unit",
2026-06-22T02:37:07.5886190Z         "int"
2026-06-22T02:37:07.5886294Z       ],
2026-06-22T02:37:07.5886394Z       "stages": {
2026-06-22T02:37:07.5886510Z         "doc": {
2026-06-22T02:37:07.5886623Z           "complete": false,
2026-06-22T02:37:07.5886743Z           "evidence": []
2026-06-22T02:37:07.5886839Z         },
2026-06-22T02:37:07.5886952Z         "impl": {
2026-06-22T02:37:07.5887068Z           "complete": true,
2026-06-22T02:37:07.5887211Z           "evidence": [
2026-06-22T02:37:07.5887319Z             {
2026-06-22T02:37:07.5887462Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5887570Z               "line": 132
2026-06-22T02:37:07.5887669Z             },
2026-06-22T02:37:07.5887774Z             {
2026-06-22T02:37:07.5887913Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5888012Z               "line": 187
2026-06-22T02:37:07.5888123Z             },
2026-06-22T02:37:07.5888219Z             {
2026-06-22T02:37:07.5888365Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5888481Z               "line": 17
2026-06-22T02:37:07.5888585Z             },
2026-06-22T02:37:07.5888690Z             {
2026-06-22T02:37:07.5888833Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5889029Z               "line": 104
2026-06-22T02:37:07.5889138Z             },
2026-06-22T02:37:07.5889242Z             {
2026-06-22T02:37:07.5889396Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5889669Z               "line": 319
2026-06-22T02:37:07.5889777Z             },
2026-06-22T02:37:07.5889882Z             {
2026-06-22T02:37:07.5890031Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5890139Z               "line": 396
2026-06-22T02:37:07.5890248Z             }
2026-06-22T02:37:07.5890348Z           ]
2026-06-22T02:37:07.5890444Z         },
2026-06-22T02:37:07.5890553Z         "int": {
2026-06-22T02:37:07.5890663Z           "complete": true,
2026-06-22T02:37:07.5890769Z           "evidence": [
2026-06-22T02:37:07.5890872Z             {
2026-06-22T02:37:07.5891153Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:37:07.5891264Z               "line": 18
2026-06-22T02:37:07.5891368Z             }
2026-06-22T02:37:07.5891473Z           ]
2026-06-22T02:37:07.5891579Z         },
2026-06-22T02:37:07.5891688Z         "unit": {
2026-06-22T02:37:07.5891797Z           "complete": true,
2026-06-22T02:37:07.5891908Z           "evidence": [
2026-06-22T02:37:07.5891998Z             {
2026-06-22T02:37:07.5892150Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5892257Z               "line": 135
2026-06-22T02:37:07.5892364Z             },
2026-06-22T02:37:07.5892468Z             {
2026-06-22T02:37:07.5892603Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5892710Z               "line": 150
2026-06-22T02:37:07.5892804Z             },
2026-06-22T02:37:07.5892920Z             {
2026-06-22T02:37:07.5893067Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5893182Z               "line": 166
2026-06-22T02:37:07.5893292Z             },
2026-06-22T02:37:07.5893396Z             {
2026-06-22T02:37:07.5893545Z               "path": "crates/spt-store/src/sessions.rs",
2026-06-22T02:37:07.5893650Z               "line": 257
2026-06-22T02:37:07.5893758Z             },
2026-06-22T02:37:07.5893865Z             {
2026-06-22T02:37:07.5894006Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5894116Z               "line": 738
2026-06-22T02:37:07.5894217Z             },
2026-06-22T02:37:07.5894321Z             {
2026-06-22T02:37:07.5894460Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5894574Z               "line": 759
2026-06-22T02:37:07.5894679Z             },
2026-06-22T02:37:07.5894780Z             {
2026-06-22T02:37:07.5894922Z               "path": "crates/spt/src/api/reporting.rs",
2026-06-22T02:37:07.5895027Z               "line": 726
2026-06-22T02:37:07.5895119Z             }
2026-06-22T02:37:07.5895213Z           ]
2026-06-22T02:37:07.5895308Z         }
2026-06-22T02:37:07.5895417Z       }
2026-06-22T02:37:07.5895507Z     },
2026-06-22T02:37:07.5895610Z     {
2026-06-22T02:37:07.5895725Z       "id": "REQ-TERM-7",
2026-06-22T02:37:07.5896917Z       "title": "Two-origin digest merge: spt-owned context-injection entries (psyche_download | echo_mirror | owl_message) appended by spt to the endpoint `digest.log`, timestamp-interleaved with the adapter's extracted activity records into one ordered timeline, via a distinct context-injection record category. Data model only this milestone; GUI collapse/expand and the echo-reads-digest delta loop are deferred to the surfaces that consume them.",
2026-06-22T02:37:07.5897052Z       "requiredStages": [
2026-06-22T02:37:07.5897155Z         "impl",
2026-06-22T02:37:07.5897265Z         "unit",
2026-06-22T02:37:07.5897357Z         "int"
2026-06-22T02:37:07.5897456Z       ],
2026-06-22T02:37:07.5897570Z       "stages": {
2026-06-22T02:37:07.5897671Z         "doc": {
2026-06-22T02:37:07.5897790Z           "complete": false,
2026-06-22T02:37:07.5897898Z           "evidence": []
2026-06-22T02:37:07.5898008Z         },
2026-06-22T02:37:07.5898111Z         "impl": {
2026-06-22T02:37:07.5898229Z           "complete": true,
2026-06-22T02:37:07.5898339Z           "evidence": [
2026-06-22T02:37:07.5898445Z             {
2026-06-22T02:37:07.5898678Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5898793Z               "line": 133
2026-06-22T02:37:07.5898906Z             },
2026-06-22T02:37:07.5899107Z             {
2026-06-22T02:37:07.5899317Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5899441Z               "line": 326
2026-06-22T02:37:07.5899546Z             },
2026-06-22T02:37:07.5899651Z             {
2026-06-22T02:37:07.5899780Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:37:07.5899884Z               "line": 15
2026-06-22T02:37:07.5899985Z             },
2026-06-22T02:37:07.5900094Z             {
2026-06-22T02:37:07.5900337Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:37:07.5900442Z               "line": 32
2026-06-22T02:37:07.5900539Z             },
2026-06-22T02:37:07.5900638Z             {
2026-06-22T02:37:07.5900770Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:37:07.5900865Z               "line": 49
2026-06-22T02:37:07.5900971Z             },
2026-06-22T02:37:07.5901079Z             {
2026-06-22T02:37:07.5901223Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5901352Z               "line": 286
2026-06-22T02:37:07.5901461Z             },
2026-06-22T02:37:07.5901567Z             {
2026-06-22T02:37:07.5901704Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5901824Z               "line": 320
2026-06-22T02:37:07.5901929Z             }
2026-06-22T02:37:07.5902028Z           ]
2026-06-22T02:37:07.5902139Z         },
2026-06-22T02:37:07.5902244Z         "int": {
2026-06-22T02:37:07.5906109Z           "complete": true,
2026-06-22T02:37:07.5906275Z           "evidence": [
2026-06-22T02:37:07.5906386Z             {
2026-06-22T02:37:07.5906580Z               "path": "crates/spt-daemon/tests/two_origin_spanning.rs",
2026-06-22T02:37:07.5906695Z               "line": 19
2026-06-22T02:37:07.5906804Z             }
2026-06-22T02:37:07.5906914Z           ]
2026-06-22T02:37:07.5907029Z         },
2026-06-22T02:37:07.5907129Z         "unit": {
2026-06-22T02:37:07.5907253Z           "complete": true,
2026-06-22T02:37:07.5907367Z           "evidence": [
2026-06-22T02:37:07.5907467Z             {
2026-06-22T02:37:07.5907621Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5907734Z               "line": 455
2026-06-22T02:37:07.5907834Z             },
2026-06-22T02:37:07.5907931Z             {
2026-06-22T02:37:07.5908087Z               "path": "crates/spt-daemon/src/digest.rs",
2026-06-22T02:37:07.5908193Z               "line": 568
2026-06-22T02:37:07.5908288Z             },
2026-06-22T02:37:07.5908397Z             {
2026-06-22T02:37:07.5908529Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:37:07.5908639Z               "line": 58
2026-06-22T02:37:07.5908742Z             },
2026-06-22T02:37:07.5908842Z             {
2026-06-22T02:37:07.5909103Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:37:07.5909229Z               "line": 77
2026-06-22T02:37:07.5909324Z             },
2026-06-22T02:37:07.5909428Z             {
2026-06-22T02:37:07.5909577Z               "path": "crates/spt-live/src/inject.rs",
2026-06-22T02:37:07.5909682Z               "line": 87
2026-06-22T02:37:07.5909786Z             },
2026-06-22T02:37:07.5909892Z             {
2026-06-22T02:37:07.5910039Z               "path": "crates/spt-store/src/history.rs",
2026-06-22T02:37:07.5910149Z               "line": 94
2026-06-22T02:37:07.5910249Z             },
2026-06-22T02:37:07.5910354Z             {
2026-06-22T02:37:07.5910502Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5910620Z               "line": 691
2026-06-22T02:37:07.5910725Z             },
2026-06-22T02:37:07.5910822Z             {
2026-06-22T02:37:07.5910968Z               "path": "crates/spt-term/src/projection.rs",
2026-06-22T02:37:07.5911074Z               "line": 716
2026-06-22T02:37:07.5911180Z             }
2026-06-22T02:37:07.5911430Z           ]
2026-06-22T02:37:07.5911551Z         }
2026-06-22T02:37:07.5911668Z       }
2026-06-22T02:37:07.5911769Z     },
2026-06-22T02:37:07.5911864Z     {
2026-06-22T02:37:07.5911978Z       "id": "REQ-UPD-1",
2026-06-22T02:37:07.5912127Z       "title": "Peer-propagated update over P2P",
2026-06-22T02:37:07.5912241Z       "requiredStages": [
2026-06-22T02:37:07.5912341Z         "impl",
2026-06-22T02:37:07.5912447Z         "unit",
2026-06-22T02:37:07.5912546Z         "int"
2026-06-22T02:37:07.5912651Z       ],
2026-06-22T02:37:07.5912757Z       "stages": {
2026-06-22T02:37:07.5912865Z         "doc": {
2026-06-22T02:37:07.5912975Z           "complete": false,
2026-06-22T02:37:07.5913208Z           "evidence": []
2026-06-22T02:37:07.5913314Z         },
2026-06-22T02:37:07.5913420Z         "impl": {
2026-06-22T02:37:07.5913537Z           "complete": true,
2026-06-22T02:37:07.5913641Z           "evidence": [
2026-06-22T02:37:07.5913747Z             {
2026-06-22T02:37:07.5913902Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5914021Z               "line": 28
2026-06-22T02:37:07.5914122Z             },
2026-06-22T02:37:07.5914221Z             {
2026-06-22T02:37:07.5914370Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5914479Z               "line": 103
2026-06-22T02:37:07.5914588Z             },
2026-06-22T02:37:07.5914689Z             {
2026-06-22T02:37:07.5914835Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5914946Z               "line": 342
2026-06-22T02:37:07.5915051Z             },
2026-06-22T02:37:07.5915146Z             {
2026-06-22T02:37:07.5915290Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5915403Z               "line": 22
2026-06-22T02:37:07.5915503Z             },
2026-06-22T02:37:07.5915600Z             {
2026-06-22T02:37:07.5915746Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5915847Z               "line": 207
2026-06-22T02:37:07.5915958Z             },
2026-06-22T02:37:07.5916066Z             {
2026-06-22T02:37:07.5916211Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5916315Z               "line": 283
2026-06-22T02:37:07.5916418Z             },
2026-06-22T02:37:07.5916523Z             {
2026-06-22T02:37:07.5916660Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5916773Z               "line": 340
2026-06-22T02:37:07.5916869Z             },
2026-06-22T02:37:07.5916979Z             {
2026-06-22T02:37:07.5917121Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:37:07.5917232Z               "line": 37
2026-06-22T02:37:07.5917341Z             }
2026-06-22T02:37:07.5917436Z           ]
2026-06-22T02:37:07.5917533Z         },
2026-06-22T02:37:07.5917637Z         "int": {
2026-06-22T02:37:07.5917746Z           "complete": true,
2026-06-22T02:37:07.5917857Z           "evidence": [
2026-06-22T02:37:07.5917961Z             {
2026-06-22T02:37:07.5918118Z               "path": "crates/spt-daemon/tests/dispatch.rs",
2026-06-22T02:37:07.5918228Z               "line": 207
2026-06-22T02:37:07.5918332Z             },
2026-06-22T02:37:07.5918433Z             {
2026-06-22T02:37:07.5918581Z               "path": "crates/spt-daemon/tests/twohost.rs",
2026-06-22T02:37:07.5918686Z               "line": 1082
2026-06-22T02:37:07.5918787Z             }
2026-06-22T02:37:07.5918891Z           ]
2026-06-22T02:37:07.5919070Z         },
2026-06-22T02:37:07.5919175Z         "unit": {
2026-06-22T02:37:07.5919293Z           "complete": true,
2026-06-22T02:37:07.5919402Z           "evidence": [
2026-06-22T02:37:07.5919508Z             {
2026-06-22T02:37:07.5919659Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5919770Z               "line": 490
2026-06-22T02:37:07.5919865Z             },
2026-06-22T02:37:07.5919974Z             {
2026-06-22T02:37:07.5920113Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5920336Z               "line": 616
2026-06-22T02:37:07.5920442Z             },
2026-06-22T02:37:07.5920537Z             {
2026-06-22T02:37:07.5920690Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:37:07.5920799Z               "line": 277
2026-06-22T02:37:07.5920900Z             },
2026-06-22T02:37:07.5920995Z             {
2026-06-22T02:37:07.5921138Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:37:07.5921252Z               "line": 124
2026-06-22T02:37:07.5921349Z             },
2026-06-22T02:37:07.5921457Z             {
2026-06-22T02:37:07.5921591Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:37:07.5921791Z               "line": 200
2026-06-22T02:37:07.5921885Z             }
2026-06-22T02:37:07.5921985Z           ]
2026-06-22T02:37:07.5922077Z         }
2026-06-22T02:37:07.5922172Z       }
2026-06-22T02:37:07.5922272Z     },
2026-06-22T02:37:07.5922373Z     {
2026-06-22T02:37:07.5922482Z       "id": "REQ-UPD-2",
2026-06-22T02:37:07.5922663Z       "title": "All binaries signature-verified before handoff",
2026-06-22T02:37:07.5922783Z       "requiredStages": [
2026-06-22T02:37:07.5922886Z         "impl",
2026-06-22T02:37:07.5922992Z         "unit"
2026-06-22T02:37:07.5923101Z       ],
2026-06-22T02:37:07.5923206Z       "stages": {
2026-06-22T02:37:07.5923307Z         "doc": {
2026-06-22T02:37:07.5923416Z           "complete": false,
2026-06-22T02:37:07.5923520Z           "evidence": []
2026-06-22T02:37:07.5923627Z         },
2026-06-22T02:37:07.5923731Z         "impl": {
2026-06-22T02:37:07.5923835Z           "complete": true,
2026-06-22T02:37:07.5923942Z           "evidence": [
2026-06-22T02:37:07.5924060Z             {
2026-06-22T02:37:07.5924211Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5924307Z               "line": 343
2026-06-22T02:37:07.5924414Z             },
2026-06-22T02:37:07.5924513Z             {
2026-06-22T02:37:07.5924668Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5924781Z               "line": 476
2026-06-22T02:37:07.5924877Z             },
2026-06-22T02:37:07.5924972Z             {
2026-06-22T02:37:07.5925114Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5925225Z               "line": 29
2026-06-22T02:37:07.5925325Z             },
2026-06-22T02:37:07.5925429Z             {
2026-06-22T02:37:07.5925564Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5925673Z               "line": 271
2026-06-22T02:37:07.5925773Z             },
2026-06-22T02:37:07.5925883Z             {
2026-06-22T02:37:07.5926026Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5926141Z               "line": 288
2026-06-22T02:37:07.5926246Z             },
2026-06-22T02:37:07.5926336Z             {
2026-06-22T02:37:07.5926484Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5926593Z               "line": 408
2026-06-22T02:37:07.5926693Z             },
2026-06-22T02:37:07.5926804Z             {
2026-06-22T02:37:07.5926940Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5927049Z               "line": 558
2026-06-22T02:37:07.5927150Z             },
2026-06-22T02:37:07.5927248Z             {
2026-06-22T02:37:07.5927395Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5927496Z               "line": 155
2026-06-22T02:37:07.5927601Z             }
2026-06-22T02:37:07.5927691Z           ]
2026-06-22T02:37:07.5927797Z         },
2026-06-22T02:37:07.5927897Z         "int": {
2026-06-22T02:37:07.5928015Z           "complete": false,
2026-06-22T02:37:07.5928121Z           "evidence": []
2026-06-22T02:37:07.5928226Z         },
2026-06-22T02:37:07.5928335Z         "unit": {
2026-06-22T02:37:07.5928441Z           "complete": true,
2026-06-22T02:37:07.5928555Z           "evidence": [
2026-06-22T02:37:07.5928654Z             {
2026-06-22T02:37:07.5928793Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5929066Z               "line": 750
2026-06-22T02:37:07.5929164Z             },
2026-06-22T02:37:07.5929265Z             {
2026-06-22T02:37:07.5929409Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5929526Z               "line": 811
2026-06-22T02:37:07.5929630Z             },
2026-06-22T02:37:07.5929731Z             {
2026-06-22T02:37:07.5929877Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5929986Z               "line": 825
2026-06-22T02:37:07.5930097Z             },
2026-06-22T02:37:07.5930196Z             {
2026-06-22T02:37:07.5930335Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5930544Z               "line": 841
2026-06-22T02:37:07.5930650Z             },
2026-06-22T02:37:07.5930749Z             {
2026-06-22T02:37:07.5930887Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5930998Z               "line": 932
2026-06-22T02:37:07.5931102Z             },
2026-06-22T02:37:07.5931211Z             {
2026-06-22T02:37:07.5931345Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5931469Z               "line": 414
2026-06-22T02:37:07.5931570Z             },
2026-06-22T02:37:07.5931660Z             {
2026-06-22T02:37:07.5931803Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5931909Z               "line": 427
2026-06-22T02:37:07.5932013Z             },
2026-06-22T02:37:07.5932103Z             {
2026-06-22T02:37:07.5932257Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:37:07.5932365Z               "line": 410
2026-06-22T02:37:07.5932464Z             }
2026-06-22T02:37:07.5932575Z           ]
2026-06-22T02:37:07.5932675Z         }
2026-06-22T02:37:07.5932783Z       }
2026-06-22T02:37:07.5932880Z     },
2026-06-22T02:37:07.5932985Z     {
2026-06-22T02:37:07.5933094Z       "id": "REQ-UPD-3",
2026-06-22T02:37:07.5933300Z       "title": "No endpoint process terminates/suspends during self-update",
2026-06-22T02:37:07.5933413Z       "requiredStages": [
2026-06-22T02:37:07.5933509Z         "impl",
2026-06-22T02:37:07.5933614Z         "unit",
2026-06-22T02:37:07.5933718Z         "int"
2026-06-22T02:37:07.5933824Z       ],
2026-06-22T02:37:07.5933934Z       "stages": {
2026-06-22T02:37:07.5934033Z         "doc": {
2026-06-22T02:37:07.5934149Z           "complete": false,
2026-06-22T02:37:07.5934258Z           "evidence": []
2026-06-22T02:37:07.5934362Z         },
2026-06-22T02:37:07.5934468Z         "impl": {
2026-06-22T02:37:07.5934582Z           "complete": true,
2026-06-22T02:37:07.5934695Z           "evidence": [
2026-06-22T02:37:07.5934795Z             {
2026-06-22T02:37:07.5934960Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5935064Z               "line": 40
2026-06-22T02:37:07.5935170Z             },
2026-06-22T02:37:07.5935265Z             {
2026-06-22T02:37:07.5935412Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5935519Z               "line": 87
2026-06-22T02:37:07.5935627Z             },
2026-06-22T02:37:07.5935732Z             {
2026-06-22T02:37:07.5935866Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.5935979Z               "line": 1136
2026-06-22T02:37:07.5936081Z             },
2026-06-22T02:37:07.5936181Z             {
2026-06-22T02:37:07.5936328Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.5936434Z               "line": 1895
2026-06-22T02:37:07.5936543Z             },
2026-06-22T02:37:07.5936643Z             {
2026-06-22T02:37:07.5936787Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5936896Z               "line": 26
2026-06-22T02:37:07.5936987Z             },
2026-06-22T02:37:07.5937087Z             {
2026-06-22T02:37:07.5937225Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5937345Z               "line": 114
2026-06-22T02:37:07.5937440Z             },
2026-06-22T02:37:07.5937548Z             {
2026-06-22T02:37:07.5937781Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5937884Z               "line": 246
2026-06-22T02:37:07.5937989Z             },
2026-06-22T02:37:07.5938090Z             {
2026-06-22T02:37:07.5938222Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5938328Z               "line": 2442
2026-06-22T02:37:07.5938433Z             }
2026-06-22T02:37:07.5938527Z           ]
2026-06-22T02:37:07.5938624Z         },
2026-06-22T02:37:07.5938724Z         "int": {
2026-06-22T02:37:07.5938833Z           "complete": true,
2026-06-22T02:37:07.5939034Z           "evidence": [
2026-06-22T02:37:07.5939134Z             {
2026-06-22T02:37:07.5939424Z               "path": "crates/spt/tests/brain_survive.rs",
2026-06-22T02:37:07.5939534Z               "line": 58
2026-06-22T02:37:07.5939635Z             }
2026-06-22T02:37:07.5939738Z           ]
2026-06-22T02:37:07.5939839Z         },
2026-06-22T02:37:07.5939936Z         "unit": {
2026-06-22T02:37:07.5940048Z           "complete": true,
2026-06-22T02:37:07.5940162Z           "evidence": [
2026-06-22T02:37:07.5940258Z             {
2026-06-22T02:37:07.5940403Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5940512Z               "line": 532
2026-06-22T02:37:07.5940613Z             },
2026-06-22T02:37:07.5940718Z             {
2026-06-22T02:37:07.5940861Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5940962Z               "line": 585
2026-06-22T02:37:07.5941065Z             },
2026-06-22T02:37:07.5941176Z             {
2026-06-22T02:37:07.5941319Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5941423Z               "line": 653
2026-06-22T02:37:07.5941529Z             },
2026-06-22T02:37:07.5941628Z             {
2026-06-22T02:37:07.5941771Z               "path": "crates/spt-daemon/src/brainproc.rs",
2026-06-22T02:37:07.5941878Z               "line": 1102
2026-06-22T02:37:07.5941977Z             },
2026-06-22T02:37:07.5942082Z             {
2026-06-22T02:37:07.5942230Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5942349Z               "line": 271
2026-06-22T02:37:07.5942450Z             },
2026-06-22T02:37:07.5942554Z             {
2026-06-22T02:37:07.5942711Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5942827Z               "line": 295
2026-06-22T02:37:07.5942925Z             },
2026-06-22T02:37:07.5943020Z             {
2026-06-22T02:37:07.5943163Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5943268Z               "line": 316
2026-06-22T02:37:07.5943377Z             },
2026-06-22T02:37:07.5943478Z             {
2026-06-22T02:37:07.5943620Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5943731Z               "line": 332
2026-06-22T02:37:07.5943831Z             }
2026-06-22T02:37:07.5943926Z           ]
2026-06-22T02:37:07.5944031Z         }
2026-06-22T02:37:07.5944136Z       }
2026-06-22T02:37:07.5944250Z     },
2026-06-22T02:37:07.5944345Z     {
2026-06-22T02:37:07.5944460Z       "id": "REQ-UPD-4",
2026-06-22T02:37:07.5944675Z       "title": "Update gated on user confirmation by default; opt-in full-auto",
2026-06-22T02:37:07.5944785Z       "requiredStages": [
2026-06-22T02:37:07.5944884Z         "impl",
2026-06-22T02:37:07.5944994Z         "unit"
2026-06-22T02:37:07.5945095Z       ],
2026-06-22T02:37:07.5945204Z       "stages": {
2026-06-22T02:37:07.5945312Z         "doc": {
2026-06-22T02:37:07.5945422Z           "complete": false,
2026-06-22T02:37:07.5945530Z           "evidence": []
2026-06-22T02:37:07.5945634Z         },
2026-06-22T02:37:07.5945740Z         "impl": {
2026-06-22T02:37:07.5945864Z           "complete": true,
2026-06-22T02:37:07.5945972Z           "evidence": [
2026-06-22T02:37:07.5946088Z             {
2026-06-22T02:37:07.5946230Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5946345Z               "line": 41
2026-06-22T02:37:07.5946445Z             },
2026-06-22T02:37:07.5946646Z             {
2026-06-22T02:37:07.5946803Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5946903Z               "line": 88
2026-06-22T02:37:07.5947013Z             },
2026-06-22T02:37:07.5947113Z             {
2026-06-22T02:37:07.5947261Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:37:07.5947389Z               "line": 23
2026-06-22T02:37:07.5947494Z             },
2026-06-22T02:37:07.5947605Z             {
2026-06-22T02:37:07.5947746Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:37:07.5947847Z               "line": 56
2026-06-22T02:37:07.5947953Z             },
2026-06-22T02:37:07.5948208Z             {
2026-06-22T02:37:07.5948345Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:37:07.5948468Z               "line": 77
2026-06-22T02:37:07.5948573Z             },
2026-06-22T02:37:07.5948674Z             {
2026-06-22T02:37:07.5948821Z               "path": "crates/spt-daemon/src/lifecycle.rs",
2026-06-22T02:37:07.5949106Z               "line": 236
2026-06-22T02:37:07.5949261Z             },
2026-06-22T02:37:07.5949379Z             {
2026-06-22T02:37:07.5949532Z               "path": "crates/spt-daemon/src/notif.rs",
2026-06-22T02:37:07.5949641Z               "line": 108
2026-06-22T02:37:07.5949746Z             },
2026-06-22T02:37:07.5949852Z             {
2026-06-22T02:37:07.5949988Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.5950094Z               "line": 270
2026-06-22T02:37:07.5950200Z             },
2026-06-22T02:37:07.5950299Z             {
2026-06-22T02:37:07.5950428Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5950534Z               "line": 2441
2026-06-22T02:37:07.5950642Z             }
2026-06-22T02:37:07.5950741Z           ]
2026-06-22T02:37:07.5950842Z         },
2026-06-22T02:37:07.5950949Z         "int": {
2026-06-22T02:37:07.5951058Z           "complete": false,
2026-06-22T02:37:07.5951183Z           "evidence": []
2026-06-22T02:37:07.5951292Z         },
2026-06-22T02:37:07.5951397Z         "unit": {
2026-06-22T02:37:07.5951512Z           "complete": true,
2026-06-22T02:37:07.5951626Z           "evidence": [
2026-06-22T02:37:07.5951726Z             {
2026-06-22T02:37:07.5951865Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5951969Z               "line": 581
2026-06-22T02:37:07.5952070Z             },
2026-06-22T02:37:07.5952174Z             {
2026-06-22T02:37:07.5952317Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5952433Z               "line": 706
2026-06-22T02:37:07.5952537Z             },
2026-06-22T02:37:07.5952647Z             {
2026-06-22T02:37:07.5952781Z               "path": "crates/spt-daemon/src/config.rs",
2026-06-22T02:37:07.5952885Z               "line": 384
2026-06-22T02:37:07.5952995Z             },
2026-06-22T02:37:07.5953096Z             {
2026-06-22T02:37:07.5953238Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:37:07.5953344Z               "line": 102
2026-06-22T02:37:07.5953444Z             },
2026-06-22T02:37:07.5953552Z             {
2026-06-22T02:37:07.5953719Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:37:07.5953823Z               "line": 123
2026-06-22T02:37:07.5953914Z             },
2026-06-22T02:37:07.5954009Z             {
2026-06-22T02:37:07.5954157Z               "path": "crates/spt-daemon/src/consent.rs",
2026-06-22T02:37:07.5954261Z               "line": 142
2026-06-22T02:37:07.5954372Z             },
2026-06-22T02:37:07.5954472Z             {
2026-06-22T02:37:07.5954615Z               "path": "crates/spt-store/src/info.rs",
2026-06-22T02:37:07.5954725Z               "line": 582
2026-06-22T02:37:07.5954834Z             },
2026-06-22T02:37:07.5954930Z             {
2026-06-22T02:37:07.5955063Z               "path": "crates/spt-store/src/perch.rs",
2026-06-22T02:37:07.5955182Z               "line": 566
2026-06-22T02:37:07.5955284Z             },
2026-06-22T02:37:07.5955487Z             {
2026-06-22T02:37:07.5955618Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.5955730Z               "line": 8256
2026-06-22T02:37:07.5955839Z             }
2026-06-22T02:37:07.5955944Z           ]
2026-06-22T02:37:07.5956038Z         }
2026-06-22T02:37:07.5956142Z       }
2026-06-22T02:37:07.5956242Z     },
2026-06-22T02:37:07.5956343Z     {
2026-06-22T02:37:07.5956456Z       "id": "REQ-UPD-5",
2026-06-22T02:37:07.5956629Z       "title": "spt-core ripple-updates registered adapters",
2026-06-22T02:37:07.5956743Z       "requiredStages": [
2026-06-22T02:37:07.5956848Z         "impl",
2026-06-22T02:37:07.5956949Z         "unit"
2026-06-22T02:37:07.5957158Z       ],
2026-06-22T02:37:07.5957258Z       "stages": {
2026-06-22T02:37:07.5957372Z         "doc": {
2026-06-22T02:37:07.5957487Z           "complete": false,
2026-06-22T02:37:07.5957592Z           "evidence": []
2026-06-22T02:37:07.5957696Z         },
2026-06-22T02:37:07.5957797Z         "impl": {
2026-06-22T02:37:07.5957926Z           "complete": true,
2026-06-22T02:37:07.5958026Z           "evidence": [
2026-06-22T02:37:07.5958131Z             {
2026-06-22T02:37:07.5958297Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5958402Z               "line": 27
2026-06-22T02:37:07.5958513Z             },
2026-06-22T02:37:07.5958602Z             {
2026-06-22T02:37:07.5958758Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5958859Z               "line": 87
2026-06-22T02:37:07.5959052Z             },
2026-06-22T02:37:07.5959152Z             {
2026-06-22T02:37:07.5959300Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5959424Z               "line": 145
2026-06-22T02:37:07.5959525Z             },
2026-06-22T02:37:07.5959634Z             {
2026-06-22T02:37:07.5959768Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5959882Z               "line": 492
2026-06-22T02:37:07.5959991Z             },
2026-06-22T02:37:07.5960088Z             {
2026-06-22T02:37:07.5960220Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5960330Z               "line": 546
2026-06-22T02:37:07.5960436Z             }
2026-06-22T02:37:07.5960539Z           ]
2026-06-22T02:37:07.5960640Z         },
2026-06-22T02:37:07.5960746Z         "int": {
2026-06-22T02:37:07.5960840Z           "complete": false,
2026-06-22T02:37:07.5960954Z           "evidence": []
2026-06-22T02:37:07.5961056Z         },
2026-06-22T02:37:07.5961160Z         "unit": {
2026-06-22T02:37:07.5961273Z           "complete": true,
2026-06-22T02:37:07.5961382Z           "evidence": [
2026-06-22T02:37:07.5961486Z             {
2026-06-22T02:37:07.5961976Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5962105Z               "line": 272
2026-06-22T02:37:07.5962209Z             },
2026-06-22T02:37:07.5962320Z             {
2026-06-22T02:37:07.5962473Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5962582Z               "line": 286
2026-06-22T02:37:07.5962693Z             },
2026-06-22T02:37:07.5962792Z             {
2026-06-22T02:37:07.5962945Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5963054Z               "line": 300
2026-06-22T02:37:07.5963163Z             },
2026-06-22T02:37:07.5963265Z             {
2026-06-22T02:37:07.5963416Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5963531Z               "line": 314
2026-06-22T02:37:07.5963628Z             },
2026-06-22T02:37:07.5963735Z             {
2026-06-22T02:37:07.5963885Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.5964004Z               "line": 348
2026-06-22T02:37:07.5964112Z             },
2026-06-22T02:37:07.5964212Z             {
2026-06-22T02:37:07.5964365Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.5964474Z               "line": 1071
2026-06-22T02:37:07.5964680Z             }
2026-06-22T02:37:07.5964779Z           ]
2026-06-22T02:37:07.5964885Z         }
2026-06-22T02:37:07.5964989Z       }
2026-06-22T02:37:07.5965089Z     },
2026-06-22T02:37:07.5965194Z     {
2026-06-22T02:37:07.5965299Z       "id": "REQ-UPD-6",
2026-06-22T02:37:07.5966158Z       "title": "Platform-targeted update sets and debug rollout: signed multi-platform update metadata, recipient platform selection, channel-scoped monotonic counters, debug-channel opt-in via release-key overlay, local staging plus pull-based peer propagation, and maintainer-only convergence tooling (ADR-0016)",
2026-06-22T02:37:07.5966280Z       "requiredStages": [
2026-06-22T02:37:07.5966475Z         "doc",
2026-06-22T02:37:07.5966584Z         "impl",
2026-06-22T02:37:07.5966683Z         "unit",
2026-06-22T02:37:07.5966783Z         "int"
2026-06-22T02:37:07.5966875Z       ],
2026-06-22T02:37:07.5966974Z       "stages": {
2026-06-22T02:37:07.5967069Z         "doc": {
2026-06-22T02:37:07.5967175Z           "complete": true,
2026-06-22T02:37:07.5967279Z           "evidence": [
2026-06-22T02:37:07.5967378Z             {
2026-06-22T02:37:07.5967532Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:37:07.5967636Z               "line": 3
2026-06-22T02:37:07.5967742Z             },
2026-06-22T02:37:07.5967837Z             {
2026-06-22T02:37:07.5967965Z               "path": "docs/DEBUG-ROLLOUT.md",
2026-06-22T02:37:07.5968071Z               "line": 3
2026-06-22T02:37:07.5968180Z             },
2026-06-22T02:37:07.5968280Z             {
2026-06-22T02:37:07.5968476Z               "path": "docs/adr/0016-platform-targeted-update-sets.md",
2026-06-22T02:37:07.5968581Z               "line": 3
2026-06-22T02:37:07.5968691Z             }
2026-06-22T02:37:07.5968791Z           ]
2026-06-22T02:37:07.5968895Z         },
2026-06-22T02:37:07.5969083Z         "impl": {
2026-06-22T02:37:07.5969191Z           "complete": true,
2026-06-22T02:37:07.5969295Z           "evidence": [
2026-06-22T02:37:07.5969400Z             {
2026-06-22T02:37:07.5969578Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5969679Z               "line": 76
2026-06-22T02:37:07.5969784Z             },
2026-06-22T02:37:07.5969884Z             {
2026-06-22T02:37:07.5970018Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5970118Z               "line": 212
2026-06-22T02:37:07.5970222Z             },
2026-06-22T02:37:07.5970329Z             {
2026-06-22T02:37:07.5970462Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5970570Z               "line": 69
2026-06-22T02:37:07.5970671Z             },
2026-06-22T02:37:07.5970776Z             {
2026-06-22T02:37:07.5970924Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5971034Z               "line": 133
2026-06-22T02:37:07.5971138Z             },
2026-06-22T02:37:07.5971239Z             {
2026-06-22T02:37:07.5971372Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5971491Z               "line": 243
2026-06-22T02:37:07.5971597Z             },
2026-06-22T02:37:07.5971706Z             {
2026-06-22T02:37:07.5971842Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5971947Z               "line": 406
2026-06-22T02:37:07.5972037Z             },
2026-06-22T02:37:07.5972131Z             {
2026-06-22T02:37:07.5972265Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5972380Z               "line": 534
2026-06-22T02:37:07.5972488Z             },
2026-06-22T02:37:07.5972580Z             {
2026-06-22T02:37:07.5972714Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5972823Z               "line": 548
2026-06-22T02:37:07.5972928Z             },
2026-06-22T02:37:07.5973028Z             {
2026-06-22T02:37:07.5973161Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5973271Z               "line": 603
2026-06-22T02:37:07.5973372Z             },
2026-06-22T02:37:07.5973586Z             {
2026-06-22T02:37:07.5973719Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5973840Z               "line": 634
2026-06-22T02:37:07.5973934Z             },
2026-06-22T02:37:07.5974043Z             {
2026-06-22T02:37:07.5974192Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:37:07.5974296Z               "line": 137
2026-06-22T02:37:07.5974401Z             },
2026-06-22T02:37:07.5974502Z             {
2026-06-22T02:37:07.5974648Z               "path": "crates/spt-daemon/src/pump/update.rs",
2026-06-22T02:37:07.5974752Z               "line": 184
2026-06-22T02:37:07.5974854Z             },
2026-06-22T02:37:07.5975048Z             {
2026-06-22T02:37:07.5975192Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5975292Z               "line": 78
2026-06-22T02:37:07.5975391Z             },
2026-06-22T02:37:07.5975498Z             {
2026-06-22T02:37:07.5975625Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5975740Z               "line": 114
2026-06-22T02:37:07.5975845Z             },
2026-06-22T02:37:07.5975945Z             {
2026-06-22T02:37:07.5976074Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5976179Z               "line": 185
2026-06-22T02:37:07.5976283Z             },
2026-06-22T02:37:07.5976389Z             {
2026-06-22T02:37:07.5976517Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5976622Z               "line": 260
2026-06-22T02:37:07.5976714Z             },
2026-06-22T02:37:07.5976818Z             {
2026-06-22T02:37:07.5976950Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5977064Z               "line": 292
2026-06-22T02:37:07.5977167Z             },
2026-06-22T02:37:07.5977267Z             {
2026-06-22T02:37:07.5977406Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5977510Z               "line": 323
2026-06-22T02:37:07.5977610Z             },
2026-06-22T02:37:07.5977716Z             {
2026-06-22T02:37:07.5977853Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5977953Z               "line": 346
2026-06-22T02:37:07.5978045Z             },
2026-06-22T02:37:07.5978145Z             {
2026-06-22T02:37:07.5978278Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5978383Z               "line": 388
2026-06-22T02:37:07.5978483Z             },
2026-06-22T02:37:07.5978592Z             {
2026-06-22T02:37:07.5978740Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5978845Z               "line": 398
2026-06-22T02:37:07.5979032Z             },
2026-06-22T02:37:07.5979127Z             {
2026-06-22T02:37:07.5979261Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5979365Z               "line": 410
2026-06-22T02:37:07.5979489Z             },
2026-06-22T02:37:07.5979585Z             {
2026-06-22T02:37:07.5979718Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5979822Z               "line": 420
2026-06-22T02:37:07.5979922Z             },
2026-06-22T02:37:07.5980025Z             {
2026-06-22T02:37:07.5980153Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5980263Z               "line": 439
2026-06-22T02:37:07.5980368Z             },
2026-06-22T02:37:07.5980468Z             {
2026-06-22T02:37:07.5980602Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5980716Z               "line": 449
2026-06-22T02:37:07.5980825Z             },
2026-06-22T02:37:07.5980912Z             {
2026-06-22T02:37:07.5981040Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5981145Z               "line": 94
2026-06-22T02:37:07.5981241Z             },
2026-06-22T02:37:07.5981341Z             {
2026-06-22T02:37:07.5981469Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5981579Z               "line": 120
2026-06-22T02:37:07.5981833Z             },
2026-06-22T02:37:07.5981932Z             {
2026-06-22T02:37:07.5982061Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5982167Z               "line": 135
2026-06-22T02:37:07.5982275Z             },
2026-06-22T02:37:07.5982369Z             {
2026-06-22T02:37:07.5982503Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5982616Z               "line": 162
2026-06-22T02:37:07.5982715Z             },
2026-06-22T02:37:07.5982811Z             {
2026-06-22T02:37:07.5982935Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5986542Z               "line": 174
2026-06-22T02:37:07.5986815Z             },
2026-06-22T02:37:07.5986925Z             {
2026-06-22T02:37:07.5987086Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5987191Z               "line": 185
2026-06-22T02:37:07.5987298Z             },
2026-06-22T02:37:07.5987397Z             {
2026-06-22T02:37:07.5987547Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5987658Z               "line": 451
2026-06-22T02:37:07.5987756Z             },
2026-06-22T02:37:07.5987855Z             {
2026-06-22T02:37:07.5987995Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5988104Z               "line": 573
2026-06-22T02:37:07.5988204Z             },
2026-06-22T02:37:07.5988295Z             {
2026-06-22T02:37:07.5988432Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5988543Z               "line": 171
2026-06-22T02:37:07.5988638Z             },
2026-06-22T02:37:07.5988738Z             {
2026-06-22T02:37:07.5988877Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:37:07.5989067Z               "line": 65
2026-06-22T02:37:07.5989167Z             },
2026-06-22T02:37:07.5989273Z             {
2026-06-22T02:37:07.5989396Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:37:07.5989507Z               "line": 71
2026-06-22T02:37:07.5989615Z             },
2026-06-22T02:37:07.5989720Z             {
2026-06-22T02:37:07.5989845Z               "path": "crates/spt-net/src/net/update.rs",
2026-06-22T02:37:07.5989944Z               "line": 77
2026-06-22T02:37:07.5990044Z             },
2026-06-22T02:37:07.5990150Z             {
2026-06-22T02:37:07.5990282Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5990391Z               "line": 778
2026-06-22T02:37:07.5990496Z             },
2026-06-22T02:37:07.5990590Z             {
2026-06-22T02:37:07.5990722Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5990823Z               "line": 795
2026-06-22T02:37:07.5990915Z             },
2026-06-22T02:37:07.5991023Z             {
2026-06-22T02:37:07.5991134Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5991243Z               "line": 838
2026-06-22T02:37:07.5991343Z             },
2026-06-22T02:37:07.5991449Z             {
2026-06-22T02:37:07.5991577Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5991690Z               "line": 981
2026-06-22T02:37:07.5991797Z             },
2026-06-22T02:37:07.5991896Z             {
2026-06-22T02:37:07.5992020Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.5992126Z               "line": 1131
2026-06-22T02:37:07.5992229Z             }
2026-06-22T02:37:07.5992334Z           ]
2026-06-22T02:37:07.5992436Z         },
2026-06-22T02:37:07.5992534Z         "int": {
2026-06-22T02:37:07.5992640Z           "complete": true,
2026-06-22T02:37:07.5992746Z           "evidence": [
2026-06-22T02:37:07.5992840Z             {
2026-06-22T02:37:07.5992996Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:37:07.5993101Z               "line": 569
2026-06-22T02:37:07.5993199Z             },
2026-06-22T02:37:07.5993303Z             {
2026-06-22T02:37:07.5993438Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:37:07.5993538Z               "line": 135
2026-06-22T02:37:07.5993734Z             }
2026-06-22T02:37:07.5993834Z           ]
2026-06-22T02:37:07.5993943Z         },
2026-06-22T02:37:07.5994039Z         "unit": {
2026-06-22T02:37:07.5994157Z           "complete": true,
2026-06-22T02:37:07.5994262Z           "evidence": [
2026-06-22T02:37:07.5994368Z             {
2026-06-22T02:37:07.5994501Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5994611Z               "line": 626
2026-06-22T02:37:07.5994716Z             },
2026-06-22T02:37:07.5994806Z             {
2026-06-22T02:37:07.5994945Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.5995045Z               "line": 675
2026-06-22T02:37:07.5995245Z             },
2026-06-22T02:37:07.5995346Z             {
2026-06-22T02:37:07.5995488Z               "path": "crates/spt-daemon/src/propagate.rs",
2026-06-22T02:37:07.5995599Z               "line": 696
2026-06-22T02:37:07.5995703Z             },
2026-06-22T02:37:07.5995806Z             {
2026-06-22T02:37:07.5995945Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5996064Z               "line": 513
2026-06-22T02:37:07.5996149Z             },
2026-06-22T02:37:07.5996255Z             {
2026-06-22T02:37:07.5996393Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5996497Z               "line": 638
2026-06-22T02:37:07.5996599Z             },
2026-06-22T02:37:07.5996699Z             {
2026-06-22T02:37:07.5996836Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.5996942Z               "line": 675
2026-06-22T02:37:07.5997051Z             },
2026-06-22T02:37:07.5997156Z             {
2026-06-22T02:37:07.5997285Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5997394Z               "line": 947
2026-06-22T02:37:07.5997485Z             },
2026-06-22T02:37:07.5997590Z             {
2026-06-22T02:37:07.5997714Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5997824Z               "line": 969
2026-06-22T02:37:07.5997929Z             },
2026-06-22T02:37:07.5998027Z             {
2026-06-22T02:37:07.5998151Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5998251Z               "line": 986
2026-06-22T02:37:07.5998354Z             },
2026-06-22T02:37:07.5998454Z             {
2026-06-22T02:37:07.5998589Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5998697Z               "line": 1001
2026-06-22T02:37:07.5998788Z             },
2026-06-22T02:37:07.5998888Z             {
2026-06-22T02:37:07.5999098Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.5999203Z               "line": 1027
2026-06-22T02:37:07.5999317Z             },
2026-06-22T02:37:07.5999413Z             {
2026-06-22T02:37:07.5999551Z               "path": "crates/spt-daemon/src/update.rs",
2026-06-22T02:37:07.5999650Z               "line": 457
2026-06-22T02:37:07.5999757Z             },
2026-06-22T02:37:07.5999856Z             {
2026-06-22T02:37:07.6000008Z               "path": "crates/spt-daemon/tests/propagate.rs",
2026-06-22T02:37:07.6000110Z               "line": 338
2026-06-22T02:37:07.6000204Z             },
2026-06-22T02:37:07.6000309Z             {
2026-06-22T02:37:07.6000420Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6000528Z               "line": 10549
2026-06-22T02:37:07.6000628Z             },
2026-06-22T02:37:07.6000739Z             {
2026-06-22T02:37:07.6000866Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.6000970Z               "line": 1260
2026-06-22T02:37:07.6001076Z             },
2026-06-22T02:37:07.6001169Z             {
2026-06-22T02:37:07.6001316Z               "path": "docs/DEBUG-CONVERGE-PLAN.md",
2026-06-22T02:37:07.6001436Z               "line": 130
2026-06-22T02:37:07.6001554Z             }
2026-06-22T02:37:07.6001660Z           ]
2026-06-22T02:37:07.6001760Z         }
2026-06-22T02:37:07.6001860Z       }
2026-06-22T02:37:07.6001960Z     },
2026-06-22T02:37:07.6002066Z     {
2026-06-22T02:37:07.6002275Z       "id": "REQ-UPD-7",
2026-06-22T02:37:07.6004422Z       "title": "Origin-source update bootstrap (`spt update fetch`): pull the latest signed release directly from the GitHub release origin (`SaberMage/spt-releases`) — the per-platform artifact + its `<asset>.release.json` SignedRelease metadata — and stage it through the EXISTING verify→stage pipeline (the same `plan_verified` gate: two-key signature + channel + monotonic rollback floor + SHA-256), after which the normal consent-notif / `spt update apply` flow is unchanged. Closes the peer-only-discovery gap (REQ-UPD-1): a first-in-fleet / isolated node can update with no peer to pull from. The signed-release anchor keeps the GitHub transport untrusted-but-verified.",
2026-06-22T02:37:07.6004656Z       "requiredStages": [
2026-06-22T02:37:07.6004755Z         "impl",
2026-06-22T02:37:07.6004861Z         "unit"
2026-06-22T02:37:07.6004956Z       ],
2026-06-22T02:37:07.6005056Z       "stages": {
2026-06-22T02:37:07.6005166Z         "doc": {
2026-06-22T02:37:07.6005285Z           "complete": false,
2026-06-22T02:37:07.6005395Z           "evidence": []
2026-06-22T02:37:07.6005486Z         },
2026-06-22T02:37:07.6005591Z         "impl": {
2026-06-22T02:37:07.6005700Z           "complete": true,
2026-06-22T02:37:07.6005801Z           "evidence": [
2026-06-22T02:37:07.6005910Z             {
2026-06-22T02:37:07.6006034Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6006144Z               "line": 2626
2026-06-22T02:37:07.6006244Z             }
2026-06-22T02:37:07.6006348Z           ]
2026-06-22T02:37:07.6006457Z         },
2026-06-22T02:37:07.6006558Z         "int": {
2026-06-22T02:37:07.6006676Z           "complete": false,
2026-06-22T02:37:07.6006786Z           "evidence": []
2026-06-22T02:37:07.6006887Z         },
2026-06-22T02:37:07.6006977Z         "unit": {
2026-06-22T02:37:07.6007086Z           "complete": true,
2026-06-22T02:37:07.6007187Z           "evidence": [
2026-06-22T02:37:07.6007278Z             {
2026-06-22T02:37:07.6007406Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6007511Z               "line": 10525
2026-06-22T02:37:07.6007616Z             }
2026-06-22T02:37:07.6007706Z           ]
2026-06-22T02:37:07.6007812Z         }
2026-06-22T02:37:07.6007916Z       }
2026-06-22T02:37:07.6008011Z     },
2026-06-22T02:37:07.6008103Z     {
2026-06-22T02:37:07.6008207Z       "id": "REQ-UPD-8",
2026-06-22T02:37:07.6010703Z       "title": "Platform-safe `spt update fetch` + apply platform-guard (v0.3.1 cross-OS brick fix): `spt update fetch` stages the signed multi-platform `SignedUpdateSet` (`update-set.json` + every platform artifact it names), never a platform-blind single `SignedRelease`, so local apply selects `current_platform()` and P2P re-serve lets each peer select ITS own platform. Defense-in-depth: `apply_staged` REFUSES a staged single-release artifact unless it is platform-stamped for THIS node (an unstamped pre-v0.3.2 single, or a single stamped for another OS, fail-safe refuses — the guard that alone prevents the v0.3.1 brick where a Linux ELF was applied as `spt.exe`). UX: a friendly post-apply message (`Updated spt-core to vX.Y.Z.` + changelog URL) driven by an additive `product_version` metadata field, with a release-counter fallback when absent.",
2026-06-22T02:37:07.6010836Z       "requiredStages": [
2026-06-22T02:37:07.6010937Z         "impl",
2026-06-22T02:37:07.6011042Z         "unit"
2026-06-22T02:37:07.6011141Z       ],
2026-06-22T02:37:07.6011252Z       "stages": {
2026-06-22T02:37:07.6011352Z         "doc": {
2026-06-22T02:37:07.6011454Z           "complete": false,
2026-06-22T02:37:07.6011559Z           "evidence": []
2026-06-22T02:37:07.6011669Z         },
2026-06-22T02:37:07.6011772Z         "impl": {
2026-06-22T02:37:07.6011881Z           "complete": true,
2026-06-22T02:37:07.6011992Z           "evidence": [
2026-06-22T02:37:07.6012100Z             {
2026-06-22T02:37:07.6012244Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.6012448Z               "line": 77
2026-06-22T02:37:07.6012550Z             },
2026-06-22T02:37:07.6012649Z             {
2026-06-22T02:37:07.6012792Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.6012893Z               "line": 49
2026-06-22T02:37:07.6012997Z             },
2026-06-22T02:37:07.6013083Z             {
2026-06-22T02:37:07.6013222Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.6013316Z               "line": 152
2026-06-22T02:37:07.6013416Z             },
2026-06-22T02:37:07.6013518Z             {
2026-06-22T02:37:07.6013645Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.6013842Z               "line": 215
2026-06-22T02:37:07.6013946Z             },
2026-06-22T02:37:07.6014050Z             {
2026-06-22T02:37:07.6014179Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.6014287Z               "line": 230
2026-06-22T02:37:07.6014381Z             },
2026-06-22T02:37:07.6014476Z             {
2026-06-22T02:37:07.6014615Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.6014720Z               "line": 247
2026-06-22T02:37:07.6014821Z             },
2026-06-22T02:37:07.6014921Z             {
2026-06-22T02:37:07.6015053Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.6015160Z               "line": 269
2026-06-22T02:37:07.6015259Z             },
2026-06-22T02:37:07.6015354Z             {
2026-06-22T02:37:07.6015489Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.6015588Z               "line": 66
2026-06-22T02:37:07.6015688Z             },
2026-06-22T02:37:07.6015799Z             {
2026-06-22T02:37:07.6015936Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.6016041Z               "line": 154
2026-06-22T02:37:07.6016142Z             },
2026-06-22T02:37:07.6016241Z             {
2026-06-22T02:37:07.6016366Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6016480Z               "line": 2430
2026-06-22T02:37:07.6016575Z             },
2026-06-22T02:37:07.6016671Z             {
2026-06-22T02:37:07.6016785Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6016903Z               "line": 2493
2026-06-22T02:37:07.6016988Z             },
2026-06-22T02:37:07.6017094Z             {
2026-06-22T02:37:07.6017208Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6017317Z               "line": 2503
2026-06-22T02:37:07.6017418Z             },
2026-06-22T02:37:07.6017518Z             {
2026-06-22T02:37:07.6017642Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6017743Z               "line": 2510
2026-06-22T02:37:07.6017856Z             },
2026-06-22T02:37:07.6017957Z             {
2026-06-22T02:37:07.6018076Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6018181Z               "line": 2627
2026-06-22T02:37:07.6018286Z             },
2026-06-22T02:37:07.6018391Z             {
2026-06-22T02:37:07.6018524Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.6018625Z               "line": 480
2026-06-22T02:37:07.6018725Z             },
2026-06-22T02:37:07.6018834Z             {
2026-06-22T02:37:07.6019030Z               "path": "crates/xtask/src/main.rs",
2026-06-22T02:37:07.6019134Z               "line": 494
2026-06-22T02:37:07.6019233Z             }
2026-06-22T02:37:07.6019333Z           ]
2026-06-22T02:37:07.6019441Z         },
2026-06-22T02:37:07.6019545Z         "int": {
2026-06-22T02:37:07.6019651Z           "complete": false,
2026-06-22T02:37:07.6019756Z           "evidence": []
2026-06-22T02:37:07.6019855Z         },
2026-06-22T02:37:07.6019961Z         "unit": {
2026-06-22T02:37:07.6020066Z           "complete": true,
2026-06-22T02:37:07.6020170Z           "evidence": [
2026-06-22T02:37:07.6020262Z             {
2026-06-22T02:37:07.6020395Z               "path": "crates/spt-daemon/src/applyhost.rs",
2026-06-22T02:37:07.6020504Z               "line": 476
2026-06-22T02:37:07.6020595Z             },
2026-06-22T02:37:07.6020838Z             {
2026-06-22T02:37:07.6020967Z               "path": "crates/spt-daemon/src/relcache.rs",
2026-06-22T02:37:07.6021077Z               "line": 580
2026-06-22T02:37:07.6021177Z             },
2026-06-22T02:37:07.6021277Z             {
2026-06-22T02:37:07.6021401Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6021507Z               "line": 10527
2026-06-22T02:37:07.6021606Z             },
2026-06-22T02:37:07.6021706Z             {
2026-06-22T02:37:07.6021841Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6021945Z               "line": 10549
2026-06-22T02:37:07.6022038Z             }
2026-06-22T02:37:07.6022234Z           ]
2026-06-22T02:37:07.6022327Z         }
2026-06-22T02:37:07.6022427Z       }
2026-06-22T02:37:07.6022528Z     },
2026-06-22T02:37:07.6022623Z     {
2026-06-22T02:37:07.6022732Z       "id": "REQ-UPD-9",
2026-06-22T02:37:07.6025237Z       "title": "`gh_release` adapter [update] avenue (optional signing): an adapter declares `[update] avenue = \"gh_release\", repo = \"user/repo\"` (+ optional `asset`, default `adapter.spt`; + optional Ed25519 `signing_key`); spt-core's ripple compares the repo's LATEST GitHub release version against the installed adapter version and, when newer, auto-updates by fetching the release `.spt` archive (the REQ-INSTALL-9 `--release` fetch primitive) → verifies the `.spt` against `signing_key` if declared, else HTTPS+GitHub first-acquisition trust → re-extracts + re-registers the adapter root. Lets a harness adapter ship updates from its own GitHub releases with NO signing tooling or plugin coupling (removes the perri file_pull/delegated avenue blockers). Acquisition-trust mirrors `--release` + the installer first-fetch; does not alter spt-core self-update (REQ-UPD-1..8).",
2026-06-22T02:37:07.6025361Z       "requiredStages": [
2026-06-22T02:37:07.6025466Z         "doc",
2026-06-22T02:37:07.6025566Z         "impl",
2026-06-22T02:37:07.6025671Z         "unit"
2026-06-22T02:37:07.6025766Z       ],
2026-06-22T02:37:07.6025871Z       "stages": {
2026-06-22T02:37:07.6025972Z         "doc": {
2026-06-22T02:37:07.6026086Z           "complete": true,
2026-06-22T02:37:07.6026190Z           "evidence": [
2026-06-22T02:37:07.6026291Z             {
2026-06-22T02:37:07.6026406Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.6026505Z               "line": 93
2026-06-22T02:37:07.6026611Z             },
2026-06-22T02:37:07.6026702Z             {
2026-06-22T02:37:07.6026825Z               "path": "docs/MANIFEST.md",
2026-06-22T02:37:07.6026936Z               "line": 285
2026-06-22T02:37:07.6027031Z             }
2026-06-22T02:37:07.6027130Z           ]
2026-06-22T02:37:07.6027241Z         },
2026-06-22T02:37:07.6027351Z         "impl": {
2026-06-22T02:37:07.6027458Z           "complete": true,
2026-06-22T02:37:07.6027568Z           "evidence": [
2026-06-22T02:37:07.6027669Z             {
2026-06-22T02:37:07.6027825Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.6027940Z               "line": 128
2026-06-22T02:37:07.6028036Z             },
2026-06-22T02:37:07.6028140Z             {
2026-06-22T02:37:07.6028270Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.6028374Z               "line": 533
2026-06-22T02:37:07.6028483Z             },
2026-06-22T02:37:07.6028580Z             {
2026-06-22T02:37:07.6028712Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.6028816Z               "line": 459
2026-06-22T02:37:07.6028923Z             },
2026-06-22T02:37:07.6029113Z             {
2026-06-22T02:37:07.6029243Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.6029365Z               "line": 505
2026-06-22T02:37:07.6029466Z             },
2026-06-22T02:37:07.6029567Z             {
2026-06-22T02:37:07.6029703Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.6029817Z               "line": 928
2026-06-22T02:37:07.6029926Z             },
2026-06-22T02:37:07.6030125Z             {
2026-06-22T02:37:07.6030269Z               "path": "crates/spt-runtime/src/registry.rs",
2026-06-22T02:37:07.6030373Z               "line": 302
2026-06-22T02:37:07.6030473Z             },
2026-06-22T02:37:07.6030574Z             {
2026-06-22T02:37:07.6030702Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6030803Z               "line": 5675
2026-06-22T02:37:07.6030903Z             },
2026-06-22T02:37:07.6031012Z             {
2026-06-22T02:37:07.6031128Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6031237Z               "line": 5720
2026-06-22T02:37:07.6031336Z             },
2026-06-22T02:37:07.6031536Z             {
2026-06-22T02:37:07.6031665Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6031772Z               "line": 5857
2026-06-22T02:37:07.6031880Z             },
2026-06-22T02:37:07.6031980Z             {
2026-06-22T02:37:07.6032105Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6032213Z               "line": 5878
2026-06-22T02:37:07.6032318Z             },
2026-06-22T02:37:07.6032429Z             {
2026-06-22T02:37:07.6032547Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6032656Z               "line": 5901
2026-06-22T02:37:07.6032756Z             },
2026-06-22T02:37:07.6032850Z             {
2026-06-22T02:37:07.6032968Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6033078Z               "line": 5928
2026-06-22T02:37:07.6033179Z             }
2026-06-22T02:37:07.6033273Z           ]
2026-06-22T02:37:07.6033379Z         },
2026-06-22T02:37:07.6033469Z         "int": {
2026-06-22T02:37:07.6033583Z           "complete": false,
2026-06-22T02:37:07.6033694Z           "evidence": []
2026-06-22T02:37:07.6033793Z         },
2026-06-22T02:37:07.6033888Z         "unit": {
2026-06-22T02:37:07.6033999Z           "complete": true,
2026-06-22T02:37:07.6034108Z           "evidence": [
2026-06-22T02:37:07.6034208Z             {
2026-06-22T02:37:07.6034362Z               "path": "crates/spt-daemon/src/adapter_update.rs",
2026-06-22T02:37:07.6034474Z               "line": 259
2026-06-22T02:37:07.6034580Z             },
2026-06-22T02:37:07.6034676Z             {
2026-06-22T02:37:07.6034803Z               "path": "crates/spt-daemon/src/release.rs",
2026-06-22T02:37:07.6034910Z               "line": 657
2026-06-22T02:37:07.6035015Z             },
2026-06-22T02:37:07.6035118Z             {
2026-06-22T02:37:07.6035251Z               "path": "crates/spt-runtime/src/manifest.rs",
2026-06-22T02:37:07.6035356Z               "line": 1107
2026-06-22T02:37:07.6035449Z             },
2026-06-22T02:37:07.6035553Z             {
2026-06-22T02:37:07.6035683Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6035787Z               "line": 7565
2026-06-22T02:37:07.6035897Z             }
2026-06-22T02:37:07.6035989Z           ]
2026-06-22T02:37:07.6036088Z         }
2026-06-22T02:37:07.6036188Z       }
2026-06-22T02:37:07.6036285Z     },
2026-06-22T02:37:07.6036384Z     {
2026-06-22T02:37:07.6036527Z       "id": "REQ-VIEWER-SKIP-TO-LIVE-ON-EVICT",
2026-06-22T02:37:07.6041753Z       "title": "A `rc --view` VIEWER that overflows its broker subscription queue and is EVICTED (OutputLog::append try_send Full → viewers.remove, REQ-HAZARD-VIEWER-ISOLATION session-protection) must SKIP TO LIVE, not die silently. ROOT (v0.13.0, b4 JIT item 2 = p0_paste + post-b4 a_journaled-Linux, ONE root): serve_attach forwards each frame (read_event→b64decode→re-encode AttachRecord→net_stream_send) SLOWER than the drain fans out under flood → its VIEWER_CHANNEL_DEPTH(256) channel overflows → the drain evicts (viewers.remove drops the ViewerSink → drops tx → viewer_writer's rx.recv() Err → the writer returns WRITING NOTHING) → serve_attach's brain.read_event() just STOPS getting Output (no EOF, no error) → serve_attach blocks forever → the operator receives nothing (attach_received_output=FALSE). Eviction-of-a-hopelessly-behind-viewer is CORRECT session-protection (keep it); SILENT+PERMANENT eviction is the bug. VIEWER-only → B2-SAFE (a viewer never advances delivered_through / is not authoritative / exposes no resume cursor). FIX (doyle-gated, skip-to-live = tail -f reconnect): (1) explicit broker→viewer EVICTION SIGNAL (KIND_VIEWER_EVICTED, written in the viewer_writer thread OFF the log lock, DISTINCT from session-exit EOF so serve must NOT tear down on it); (2) serve_attach re-subscribes from the CURRENT ring floor (skip-to-live, replays nothing, sees the next live burst) — resetting the cold serve-brain's next_seq so the post-eviction forward-jump replay is accepted (the legacy reject-gap path, brain.rs:618-626, would otherwise FATAL the forward jump); (3) HARD constraint NO evict→resubscribe busy-loop: serve_attach rate-limits re-subscribes (RESUBSCRIBE_INTERVAL) so under max-flood the operator sees intermittent LIVE bursts, never a CPU spin. (v0.13.0)",
2026-06-22T02:37:07.6042411Z       "requiredStages": [
2026-06-22T02:37:07.6042516Z         "doc",
2026-06-22T02:37:07.6042622Z         "impl",
2026-06-22T02:37:07.6042731Z         "unit",
2026-06-22T02:37:07.6042836Z         "int"
2026-06-22T02:37:07.6042941Z       ],
2026-06-22T02:37:07.6043041Z       "stages": {
2026-06-22T02:37:07.6043145Z         "doc": {
2026-06-22T02:37:07.6043249Z           "complete": true,
2026-06-22T02:37:07.6043354Z           "evidence": [
2026-06-22T02:37:07.6043452Z             {
2026-06-22T02:37:07.6043571Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.6043677Z               "line": 342
2026-06-22T02:37:07.6043777Z             }
2026-06-22T02:37:07.6043886Z           ]
2026-06-22T02:37:07.6043973Z         },
2026-06-22T02:37:07.6044077Z         "impl": {
2026-06-22T02:37:07.6044196Z           "complete": true,
2026-06-22T02:37:07.6044297Z           "evidence": [
2026-06-22T02:37:07.6044401Z             {
2026-06-22T02:37:07.6044544Z               "path": "crates/spt-daemon/src/attach.rs",
2026-06-22T02:37:07.6044649Z               "line": 432
2026-06-22T02:37:07.6044754Z             },
2026-06-22T02:37:07.6044854Z             {
2026-06-22T02:37:07.6044978Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.6045083Z               "line": 683
2026-06-22T02:37:07.6045184Z             },
2026-06-22T02:37:07.6045279Z             {
2026-06-22T02:37:07.6045407Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.6045513Z               "line": 859
2026-06-22T02:37:07.6045618Z             },
2026-06-22T02:37:07.6045716Z             {
2026-06-22T02:37:07.6045850Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.6045958Z               "line": 700
2026-06-22T02:37:07.6046056Z             },
2026-06-22T02:37:07.6046167Z             {
2026-06-22T02:37:07.6046296Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.6046400Z               "line": 788
2026-06-22T02:37:07.6046501Z             }
2026-06-22T02:37:07.6046606Z           ]
2026-06-22T02:37:07.6046714Z         },
2026-06-22T02:37:07.6046811Z         "int": {
2026-06-22T02:37:07.6046930Z           "complete": true,
2026-06-22T02:37:07.6047039Z           "evidence": [
2026-06-22T02:37:07.6047140Z             {
2026-06-22T02:37:07.6047307Z               "path": "crates/spt-daemon/tests/inject_control_wedge.rs",
2026-06-22T02:37:07.6047416Z               "line": 2052
2026-06-22T02:37:07.6047517Z             }
2026-06-22T02:37:07.6047612Z           ]
2026-06-22T02:37:07.6047716Z         },
2026-06-22T02:37:07.6047818Z         "unit": {
2026-06-22T02:37:07.6047921Z           "complete": true,
2026-06-22T02:37:07.6048027Z           "evidence": [
2026-06-22T02:37:07.6048133Z             {
2026-06-22T02:37:07.6048265Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.6048376Z               "line": 1448
2026-06-22T02:37:07.6048480Z             },
2026-06-22T02:37:07.6048583Z             {
2026-06-22T02:37:07.6048717Z               "path": "crates/spt-daemon/src/brain.rs",
2026-06-22T02:37:07.6048813Z               "line": 1605
2026-06-22T02:37:07.6048916Z             },
2026-06-22T02:37:07.6049194Z             {
2026-06-22T02:37:07.6049332Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.6049442Z               "line": 2336
2026-06-22T02:37:07.6049541Z             },
2026-06-22T02:37:07.6049647Z             {
2026-06-22T02:37:07.6049780Z               "path": "crates/spt-daemon/src/broker.rs",
2026-06-22T02:37:07.6049884Z               "line": 2403
2026-06-22T02:37:07.6049995Z             },
2026-06-22T02:37:07.6050095Z             {
2026-06-22T02:37:07.6050223Z               "path": "crates/spt-daemon/src/msg.rs",
2026-06-22T02:37:07.6050329Z               "line": 1002
2026-06-22T02:37:07.6050433Z             }
2026-06-22T02:37:07.6050649Z           ]
2026-06-22T02:37:07.6050748Z         }
2026-06-22T02:37:07.6050852Z       }
2026-06-22T02:37:07.6050952Z     },
2026-06-22T02:37:07.6051056Z     {
2026-06-22T02:37:07.6051169Z       "id": "REQ-WHOAMI-1",
2026-06-22T02:37:07.6052804Z       "title": "`spt whoami` is a thin ALIAS for `spt endpoint list` (full output: the SELF pin + the subnet roster) — the standalone bare-id command is dropped (the `id=$(spt whoami)` capture was never a real pattern: env vars don't persist between agent tool calls). The one new render: the `endpoint list` SELF pin carries the Self endpoint's authored `endpoint description` (info::read_info(...).resources) when present, inline after the liveness state. whoami stays a top-level hot-path verb (parse unchanged, REQ-MSG-9).",
2026-06-22T02:37:07.6052939Z       "requiredStages": [
2026-06-22T02:37:07.6053043Z         "doc",
2026-06-22T02:37:07.6053148Z         "impl",
2026-06-22T02:37:07.6053254Z         "unit"
2026-06-22T02:37:07.6053362Z       ],
2026-06-22T02:37:07.6053463Z       "stages": {
2026-06-22T02:37:07.6053555Z         "doc": {
2026-06-22T02:37:07.6053657Z           "complete": true,
2026-06-22T02:37:07.6053761Z           "evidence": [
2026-06-22T02:37:07.6053867Z             {
2026-06-22T02:37:07.6053979Z               "path": "CONTEXT.md",
2026-06-22T02:37:07.6054078Z               "line": 707
2026-06-22T02:37:07.6054184Z             }
2026-06-22T02:37:07.6054275Z           ]
2026-06-22T02:37:07.6054384Z         },
2026-06-22T02:37:07.6054485Z         "impl": {
2026-06-22T02:37:07.6054614Z           "complete": true,
2026-06-22T02:37:07.6054722Z           "evidence": [
2026-06-22T02:37:07.6054824Z             {
2026-06-22T02:37:07.6054952Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6055056Z               "line": 3190
2026-06-22T02:37:07.6055157Z             },
2026-06-22T02:37:07.6055252Z             {
2026-06-22T02:37:07.6055371Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6055477Z               "line": 3218
2026-06-22T02:37:07.6055581Z             }
2026-06-22T02:37:07.6055676Z           ]
2026-06-22T02:37:07.6055773Z         },
2026-06-22T02:37:07.6055881Z         "int": {
2026-06-22T02:37:07.6055986Z           "complete": false,
2026-06-22T02:37:07.6056098Z           "evidence": []
2026-06-22T02:37:07.6056206Z         },
2026-06-22T02:37:07.6056319Z         "unit": {
2026-06-22T02:37:07.6056429Z           "complete": true,
2026-06-22T02:37:07.6056537Z           "evidence": [
2026-06-22T02:37:07.6056640Z             {
2026-06-22T02:37:07.6056755Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6056870Z               "line": 7847
2026-06-22T02:37:07.6056969Z             },
2026-06-22T02:37:07.6057071Z             {
2026-06-22T02:37:07.6057181Z               "path": "crates/spt/src/cli.rs",
2026-06-22T02:37:07.6057279Z               "line": 7900
2026-06-22T02:37:07.6057376Z             }
2026-06-22T02:37:07.6057466Z           ]
2026-06-22T02:37:07.6057575Z         }
2026-06-22T02:37:07.6057677Z       }
2026-06-22T02:37:07.6057772Z     }
2026-06-22T02:37:07.6057871Z   ],
2026-06-22T02:37:07.6057976Z   "findings": []
2026-06-22T02:37:07.6058077Z }
